Mechanism for tracing direct machine logins

For Linux/UNIX-based systems we use ssh keys to control log-ins to the server. Currently we do not log the keys used to log into the system which is beneficial from an audit perspective.
A SHA256 fingerprint of the keys used for successful connections are typically written to the SSH log file (e.g. /var/log/auth.log). ssh-keygen -l -f [keys_file] can be used to show the fingerprints of each key in the authorized_keys file. We can therefore tell which keys were used to log into the machines and potentially store them in a central location for analysis to identify unexpected access patterns. Wazuh could be likely be ideal for tracking this #3162.

The following is an example of a successful login via ssh in Wazuh..
`

@timestamp
2023-10-31T10:43:45.143Z

GeoLocation.city_name
Sheffield

GeoLocation.country_name
United Kingdom

GeoLocation.location.lat
53.3376

GeoLocation.location.lon
-1.4771

GeoLocation.region_name
Sheffield

_id
nkFVhYsBh4t68z4XEqKQ

agent.id
001

agent.ip
<IP_ADDRESS>

agent.name
nagios

data.dstuser
root

data.srcip
<IP_ADDRESS>

data.srcport
60900

decoder.name
sshd

decoder.parent
sshd

full_log
Oct 31 11:43:44 nagios sshd[3881232]: Accepted publickey for root from <IP_ADDRESS> port 60900 ssh2: RSA SHA256:xxxxxxxxxxxxxxxxxxxxxREDACTEDxxxxxxxxxxxxxxxxxxxxxxxxxxx

id
1698749025.1164333527

input.type
log

location
/var/log/auth.log

manager.name
infra-wazuh-server

predecoder.hostname
nagios

predecoder.program_name
sshd

predecoder.timestamp
Oct 31 11:43:44

rule.description
sshd: authentication success.

rule.firedtimes
30

rule.gdpr
IV_32.2

rule.gpg13
7.1, 7.2

rule.groups
syslog, sshd, authentication_success

rule.hipaa
164.312.b

rule.id
5715

rule.level
3

rule.mail
false

rule.mitre.id
T1078, T1021

rule.mitre.tactic
Defense Evasion, Persistence, Privilege Escalation, Initial Access, Lateral Movement

rule.mitre.technique
Valid Accounts, Remote Services

rule.nist_800_53
AU.14, AC.7

rule.pci_dss
10.2.5

rule.tsc
CC6.8, CC7.2, CC7.3

timestamp
2023-10-31T10:43:45.143+0000

`

Below is how I've configured a custom decoder for extracting additional information from the auth.log in Wazuh. This example works for a log file that is already ingested by Wazuh.  If reading in  a new log file, additional steps will be needed...

Identify a sample log entry ( this is from an auth.log file (

xxxxx sshd[1914646]: Accepted publickey for nagios from <IP_ADDRESS> port 37010 ssh2: RSA SHA256:XXXXXXXXX

Add the below section to the Wazuh server local decoder config file: /var/ossec/etc/decoders/local_decoder.xml, please note the comment lines, to provide clarity and details on what the decoder is for.

<!-- Custom Decoder For SSH Capturing KEY Hash -->
<!-- Example log entry: xxxxx sshd[1914646]: Accepted publickey for nagios from <IP_ADDRESS> port 37010 ssh2: RSA SHA256:XXXXXXXXX -->
<!-- Example log can be used with Wazuh logtest utility -->

<decoder name="ssh-with-key">
       <prematch>\S+ sshd[\d+]:</prematch>
       <regex offset="after_prematch"> (\S+) publickey for (\.+) from (\.+) port (\.+) ssh2: RSA SHA256:(\.+)</regex>
        <order>status, user, ipaddress, port, SHA256</order>
</decoder>

Add a custom rule ( Note Use ID numbers between 100000 and 120000 for custom rules. )  to the Wazuh server custom rules file /var/ossec/etc/rules/local_rules.xml

<group name="custom_rules,">
  <rule id="100010" level="10">
    <decoded_as>ssh-with-key</decoded_as>
    <description>SSH With Valid Key</description>
  </rule>
</group>

Run the test log line though the Wazuh logtest program ( /var/ossec/bin/wazuh-logtest )

Starting wazuh-logtest v4.5.3
Type one log per line

xxxxx sshd[1914646]: Accepted publickey for nagios from <IP_ADDRESS> port 37010 ssh2: RSA SHA256:XXXXXXXXX

**Phase 1: Completed pre-decoding.
	full event: 'xxxxx sshd[1914646]: Accepted publickey for nagios from <IP_ADDRESS> port 37010 ssh2: RSA SHA256:XXXXXXXXX'

**Phase 2: Completed decoding.
	name: 'ssh-with-key'
	SHA256: 'XXXXXXXXX'
	dstuser: 'nagios'
	ipaddress: '<IP_ADDRESS>'
	port: '37010'
	status: 'Accepted'

**Phase 3: Completed filtering (rules).
	id: '100010'
	level: '10'
	description: 'SSH With Valid Key'
	groups: '['custom_rules']'
	firedtimes: '1'
	mail: 'False'
**Alert to be generated.

I have this configured and working for ssh logins in Wazuh, not using the custom rule above, as that doesn't work in practice, though it does in test :), there is a difference between adding a new custom decoder ( as shown in the example above ) and extending an existing decoder and alert.. the process is subtly different... here's how I got this to work... the process below should ensure that the custom rules do not get overwritten by future updates...
This example shows the extension to the existing sshd-success decoder

Copy the existing decoder file from Wazuh into the custom decoders location

cp /var/ossec/ruleset/decoders/0310-ssh_decoders.xml /var/ossec/etc/decoders/

Edit the /var/ossec/etc/ossec.conf to disable the system default decoder, the following line is added..

<decoder_exclude>ruleset/decoders/0310-ssh_decoders.xml</decoder_exclude>
<ruleset>
    <!-- Default ruleset -->
    <decoder_dir>ruleset/decoders</decoder_dir>
    <rule_dir>ruleset/rules</rule_dir>
    <rule_exclude>0215-policy_rules.xml</rule_exclude>
    <list>etc/lists/audit-keys</list>
    <list>etc/lists/amazon/aws-eventnames</list>
    <list>etc/lists/security-eventchannel</list>

    <!-- User-defined ruleset -->
    <decoder_dir>etc/decoders</decoder_dir>
    <rule_dir>etc/rules</rule_dir>
    <decoder_exclude>ruleset/decoders/0310-ssh_decoders.xml</decoder_exclude>
  </ruleset>

Update the new custom decoders file created in step 1,  (/var/ossec/etc/decoders/0310-ssh_decoders.xml) with the required changes, for this example Im changing the default sshd-success decoder to capture the SSH Key checksum

Replace this:
<decoder name="sshd-success">
  <parent>sshd</parent>
  <prematch>^Accepted</prematch>
  <regex offset="after_prematch">^ \S+ for (\S+) from (\S+) port (\S+)</regex>
  <order>user, srcip, srcport</order>
  <fts>name, user, location</fts>
</decoder>

With this:
<decoder name="sshd-success">
  <parent>sshd</parent>
  <prematch>^Accepted</prematch>
  <regex offset="after_prematch">^ \S+ for (\S+) from (\S+) port (\S+) ssh2: RSA SHA256:(\S+)</regex>
  <order>user, srcip, srcport, keysum</order>
  <fts>name, user, location</fts>
</decoder>

Ensure the file permissions are correct on the new decoders file, /var/ossec/etc/decoders/0310-ssh_decoders.xml and restart the Wazuh server

systemctl restart wazuh-manager

If the server fails to restart, you can check any errors with the service by running

systemctl status wazuh-manager

Which should highlight any issues with file syntax, permissions etc

Finally you can test your changes by using the wazuh-logtest utility....

/var/ossec/bin/wazuh-logtest

And then paste in a full log line to be checked, e.g..
Nov  7 17:02:05 nagios sshd[703148]: Accepted publickey for root from <IP_ADDRESS> port 51420 ssh2: RSA SHA256:xxxxxxxxxxxxxxxxxxx

Which should return the expected output.. and you can see the new keysum field being captured by Wazuh
**Phase 1: Completed pre-decoding.
	full event: 'Nov  7 17:02:05 nagios sshd[703148]: Accepted publickey for root from <IP_ADDRESS> port 51420 ssh2: RSA SHA256:xxxxxxxxxxxxxxxxxxx'
	timestamp: 'Nov  7 17:02:05'
	hostname: 'nagios'
	program_name: 'sshd'

**Phase 2: Completed decoding.
	name: 'sshd'
	parent: 'sshd'
	dstuser: 'root'
	keysum: 'xxxxxxxxxxxxxxxxxxx'
	srcip: '<IP_ADDRESS>'
	srcport: '51420'

**Phase 3: Completed filtering (rules).
	id: '5715'
	level: '3'
	description: 'sshd: authentication success.'
	groups: '['syslog', 'sshd', 'authentication_success']'
	firedtimes: '1'
	gdpr: '['IV_32.2']'
	gpg13: '['7.1', '7.2']'
	hipaa: '['164.312.b']'
	mail: 'False'
	mitre.id: '['T1078', 'T1021']'
	mitre.tactic: '['Defense Evasion', 'Persistence', 'Privilege Escalation', 'Initial Access', 'Lateral Movement']'
	mitre.technique: '['Valid Accounts', 'Remote Services']'
	nist_800_53: '['AU.14', 'AC.7']'
	pci_dss: '['10.2.5']'
	tsc: '['CC6.8', 'CC7.2', 'CC7.3']'
**Alert to be generated.

Here is a screenshot of what I've achieved so far..

Added some visualisations, and a new dashboard for this specific task..

And a new dashboard in Wazuh...


Add infra as code and CD

Move web-app to it's own folder
Setup codespaces devcontainer
Implement app service workflows

Related to: Add infra as code and CD #33

Merged this manually


Typing Animation of Make Your URL Short

Hey @Nehakumari1208, we don't need this as we are redesigning the UI.
Contribute to other issues or project, good luck.


Sync availability on / and /contact

/contact says "I am currently accepting new freelance projects." and / says "I am currently not accepting new freelance projects."

Wow, wondering how I didn't notice this issue :P.
Thanks, fixed :)


images --all developer note

podman does not implement --all for images
intermediate images are only generated during the build process.  they are
children to the image once built. until buildah supports caching builds,
it will not generate these intermediate images.
Signed-off-by: baude<EMAIL_ADDRESS>

LGTM

@rh-atomic-bot r+


SCRD-5900 - update csv importer to work with new validators

The updated validators only return a value if there is an error. The csv importer was expecting values back. Updated the logic to match the new validators and csv import is working again

I have a trio of test files:
foo81,<IP_ADDRESS>,00:14:22:01:23:41,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo82,<IP_ADDRESS>,00:14:22:01:23:42,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo83,<IP_ADDRESS>,00:14:22:01:23:43,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo84,<IP_ADDRESS>,00:14:22:01:23:44,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo85,<IP_ADDRESS>,00:14:22:01:23:45,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo86,<IP_ADDRESS>,00:14:22:01:23:46,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo87,<IP_ADDRESS>,00:14:22:01:23:47,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo88,<IP_ADDRESS>,00:14:22:01:23:48,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE
foo89,<IP_ADDRESS>,00:14:22:01:23:49,AZ1,MY-2PORT-SERVER,COMPUTE-ROLE

unassigned:
foo81,<IP_ADDRESS>,00-14-22-01-23-41,AZ1,MY-2PORT-SERVER
foo82,<IP_ADDRESS>,00-14-22-01-23-42,AZ1,MY-2PORT-SERVER
foo83,<IP_ADDRESS>,00-14-22-01-23-43,AZ1,MY-2PORT-SERVER
foo84,<IP_ADDRESS>,00-14-22-01-23-44,AZ1,MY-2PORT-SERVER
foo85,<IP_ADDRESS>,00-14-22-01-23-45,AZ1,MY-2PORT-SERVER
foo86,<IP_ADDRESS>,00-14-22-01-23-46,AZ1,MY-2PORT-SERVER
foo87,<IP_ADDRESS>,00-14-22-01-23-47,AZ1,MY-2PORT-SERVER
foo88,<IP_ADDRESS>,00-14-22-01-23-48,AZ1,MY-2PORT-SERVER
foo89,<IP_ADDRESS>,00-14-22-01-23-49,AZ1,MY-2PORT-SERVER

and invalid:
foo85,<IP_ADDRESS>,00-14-22-01-23-45,AZ,MY-2PORT-SERVER,COMPUTE-ROLE


How do I update an app that I installed with a specific version (without uninstalling and reinstalling)?

Here's a specific case:
Let's say I installed terraform, version 0.11.14 because that's what the team I work with is using now:
scoop install<EMAIL_ADDRESS>That creates an appropriate manifest in my scoop workspace and installs the correct version. All fine and dandy.
The team decides to use the newest version of terraform (0.12.11) for a new project, but not to upgrade the version used by an old project because... reasons.
What I was expecting to be able to do:
scoop update terraform to update terraform, but keep the old version in its own version folder;
then use scoop reset<EMAIL_ADDRESS>when working on the old project, and scoop reset<EMAIL_ADDRESS>when working on the new one.
But that doesn't work. And if I try to scoop install<EMAIL_ADDRESS>or scoop update terraform -f, I get a message that the latest version is already installed (because it's relying on the generated manifest for 0.11.14 instead of the one in the bucket)
So, I am stuck with uninstalling and reinstalling the version each time I swap to a different project.
Is there something I am missing that would make the process easier? The wiki is not very exhaustive about scoop's commands.

After toying around with it a bit, I noticed that if I do
scoop update<EMAIL_ADDRESS>-f, it does update terraform to the latest version (thanks to -f), but it renames the \0.11.14\ version folder to \_0.11.14.old\
Because of this, it prevents scoop reset<EMAIL_ADDRESS>from working; the workaround is to rename the version folder to the correct version, but then this brings the question: why does a forced update rename the previous installed version folder to that _<version number>.old format?


News section- add an easy way for the network to submit news

Some kind of link where people fill out a form that creates a news story for us to approve, with name, title, text, and photo, and have a space for this news in the news section of the website, maybe they are uploaded to Fab News section (currently press releases section) once they're approved?

I prepared this:
https://forms.fabfoundation.org/press/add
The form sends the data by email (to me, need to add other email addresses) but also stores it in a database. We can find a way to import the data in the website or simply copy and paste.
There's a web panel to access the data (Ask me for the password).
https://forms.fabfoundation.org/admin

@fibasile  This is great!! I think we can also add my e-mail address to receive the forms.
Can you add an option to attach a photo?
What would you suggest for importing the data? Is there a way to set it up so that if we 'approve' the submission, it automatically gets uploaded to the news section of the website in a certain place with all the info? Worse comes to worse can copy and paste.
Thank you!

The image and attachment are now online.
Yes the approved can be automatically fed into the website.
This would follow having the website pulling data from this system and all existing data imported.
So we can keep this on pause until there is more time I guess.

Sounds good. For now, I could put the link to the form on the website so people can submit. Would you and I both get a notification every time someone submits something?

Tested both forms and I think we are good to go, you should have received few emails from<EMAIL_ADDRESS>Make a test yourself for both forms and you can add the links to the website.

I did, it's great.
Any way to change "kind" to "type of publication" and underneath have it
say "Select the type of publication". I can change it but wasn't sure where
to find the form in Github.
Where do the forms live? Is it in the website's repository on github? Just
good to know!
Thanks, Fiore!
Rebecca Ottinger
Executive Assistant to President & CEO
The Fab Foundation
50 Milk St., 16th Floor
https://maps.google.com/?q=50+Milk+St.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g
Boston, MA 02109
https://maps.google.com/?q=50+Milk+St.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g
+1 (617) 412 - 6295
<EMAIL_ADDRESS>http://www.fabfoundation.org/
http://goog_1217452108
[image: https://www.scopesdf.org/] https://www.scopesdf.org/
On Thu, Apr 18, 2019 at 1:35 PM Fiore Basile<EMAIL_ADDRESS>wrote:

Tested both forms and I think we are good to go, you should have received
few emails from<EMAIL_ADDRESS>Make a test yourself for both forms and you can add the links to the
website.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/fablabbcn/fabfoundation/issues/23#issuecomment-484605387,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALR5P7SIUXKLEUMZSJLU2N3PRCWMZANCNFSM4G7L4EEQ
.

They are on a separate machine as github can't host databases. I can change
the labels.
Il Gio 18 Apr 2019, 20:23 rebeccaottinger<EMAIL_ADDRESS>ha
scritto:

I did, it's great.
Any way to change "kind" to "type of publication" and underneath have it
say "Select the type of publication". I can change it but wasn't sure where
to find the form in Github.
Where do the forms live? Is it in the website's repository on github? Just
good to know!
Thanks, Fiore!
Rebecca Ottinger
Executive Assistant to President & CEO
The Fab Foundation
50 Milk St., 16th Floor
<https://maps.google.com/?q=50+Milk+St
.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g>
Boston, MA 02109
<https://maps.google.com/?q=50+Milk+St
.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g>
+1 (617) 412 - 6295
<EMAIL_ADDRESS>http://www.fabfoundation.org/
http://goog_1217452108
[image: https://www.scopesdf.org/] https://www.scopesdf.org/
On Thu, Apr 18, 2019 at 1:35 PM Fiore Basile<EMAIL_ADDRESS>wrote:

Tested both forms and I think we are good to go, you should have received
few emails from<EMAIL_ADDRESS>Make a test yourself for both forms and you can add the links to the
website.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<
https://github.com/fablabbcn/fabfoundation/issues/23#issuecomment-484605387
,
or mute the thread
<
https://github.com/notifications/unsubscribe-auth/ALR5P7SIUXKLEUMZSJLU2N3PRCWMZANCNFSM4G7L4EEQ
.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/fablabbcn/fabfoundation/issues/23#issuecomment-484627230,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAIBMZ4LP7IKGHXWYR7S5LPRC4D3ANCNFSM4G7L4EEQ
.

Great! Thank you!
Rebecca Ottinger
Executive Assistant to President & CEO
The Fab Foundation
50 Milk St., 16th Floor
https://maps.google.com/?q=50+Milk+St.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g
Boston, MA 02109
https://maps.google.com/?q=50+Milk+St.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g
+1 (617) 412 - 6295
<EMAIL_ADDRESS>http://www.fabfoundation.org/
http://goog_1217452108
[image: https://www.scopesdf.org/] https://www.scopesdf.org/
On Thu, Apr 18, 2019 at 2:55 PM Fiore Basile<EMAIL_ADDRESS>wrote:

They are on a separate machine as github can't host databases. I can change
the labels.
Il Gio 18 Apr 2019, 20:23 rebeccaottinger<EMAIL_ADDRESS>ha
scritto:

I did, it's great.
Any way to change "kind" to "type of publication" and underneath have it
say "Select the type of publication". I can change it but wasn't sure
where
to find the form in Github.
Where do the forms live? Is it in the website's repository on github?
Just
good to know!
Thanks, Fiore!
Rebecca Ottinger
Executive Assistant to President & CEO
The Fab Foundation
50 Milk St., 16th Floor
<https://maps.google.com/?q=50+Milk+St
.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g>
Boston, MA 02109
<https://maps.google.com/?q=50+Milk+St
.,+16th+Floor+Boston,+MA+02109&entry=gmail&source=g>
+1 (617) 412 - 6295
<EMAIL_ADDRESS>http://www.fabfoundation.org/
http://goog_1217452108
[image: https://www.scopesdf.org/] https://www.scopesdf.org/
On Thu, Apr 18, 2019 at 1:35 PM Fiore Basile<EMAIL_ADDRESS>wrote:

Tested both forms and I think we are good to go, you should have
received
few emails from<EMAIL_ADDRESS>Make a test yourself for both forms and you can add the links to the
website.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<

https://github.com/fablabbcn/fabfoundation/issues/23#issuecomment-484605387

,
or mute the thread
<

https://github.com/notifications/unsubscribe-auth/ALR5P7SIUXKLEUMZSJLU2N3PRCWMZANCNFSM4G7L4EEQ

.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<
https://github.com/fablabbcn/fabfoundation/issues/23#issuecomment-484627230
,
or mute the thread
<
https://github.com/notifications/unsubscribe-auth/AAAIBMZ4LP7IKGHXWYR7S5LPRC4D3ANCNFSM4G7L4EEQ
.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/fablabbcn/fabfoundation/issues/23#issuecomment-484640862,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALR5P7ROJEVME5VRQMLQS23PRC72LANCNFSM4G7L4EEQ
.


Added cargo/rust as a necessary tool in the CONTRIBUTING.md

Added Rust (Cargo) to the necessary tools list in the Contributions document.
Issue #144
Many issues occur, making the submodule unusable without Cargo/Rust.
The project can start, even with errors, making the initial misconfiguration hard to spot.
This clarification should help prevent people from encountering the same issue.

ty!


Added context to App facade constructor

This will help to create the tls server.
For example:
 $app = new App('localhost', 8080, 'tls://<IP_ADDRESS>', $loop, ['tls' => [     'allow_self_signed' => true,     'local_cert' => '/etc/nginx/ssl/localhost.crt',     'local_pk' => '/etc/nginx/ssl/localhost.key' ]]);

merged


Please correct npm maintainers configuration.

ioBroker adapter checker for npm access
Access right check for adapter nsclient returned the following issue:Bluefox was not found in the collaborators on NPM!.
Please execute in adapter directory: "npm owner add bluefox iobroker.nsclient"
Current maintainers are
apollon77<EMAIL_ADDRESS>Please fix the above error as soon as possible.
All adapters listed at ioBroker repositories must have 'bluefox' added as maintainer.
Future version updates at the repositories will be suspended until this problem is fixed.

delezte for testing purpose


feat: upgrades code to work on node22

Not a contributor to this repo, but some feedback.
If you change code, you might want to consider:

not bulk changing existing formatting
not switching package managers
not squashing everything in one commit if important things get changed in one PR


Component loading issue when building SCSS.

Running into an issue with path configuration or file generation during npm install.
I have already reviewed #691, #676, and other issues mentioning _settings.scss, but no luck.
Environment Details

Fresh install.
Linux (Ubuntu derivative).
node -v = v4.4.0 (via nvm)
npm -v = 2.14.20
bower -v = 1.4.1

How to Reproduce
Following instructions, cloning the repo and running npm install results in tasks passing, with some deprecation warnings, and with this error along the way:
Error msg:
what-input#1.1.4 bower_components/what-input
[20:49:49] Using gulpfile ~/code/foundationpress/gulpfile.js
[20:49:49] Starting 'clean'...
[20:49:49] Starting 'clean:javascript'...
[20:49:49] Starting 'clean:css'...
[20:49:49] Finished 'clean:javascript' after 8.52 ms
[20:49:49] Finished 'clean:css' after 5.23 ms
[20:49:49] Finished 'clean' after 12 ms
[20:49:49] Starting 'build'...
[20:49:49] Starting 'copy'...
[20:49:49] Finished 'copy' after 38 ms
[20:49:49] Starting 'sass'...
[20:49:50] Starting 'javascript'...
[20:49:50] Starting 'lint'...
[20:49:50] gulp-notify: [Sass Error] assets/scss/global/_settings.scss
Error: File to import not found or unreadable: ../../components/foundation-sites/scss/util/util
       Parent style sheet: /home/USERNAME/code/foundationpress/assets/scss/global/_settings.scss
        on line 43 of assets/scss/global/_settings.scss
>> @import '../../components/foundation-sites/scss/util/util';
   ^

The same error shows up when running npm run watch or npm run build.
[20:50:41] Starting 'clean'...
[20:50:41] Starting 'clean:javascript'...
[20:50:41] Starting 'clean:css'...
[20:50:41] Finished 'clean:css' after 9.4 ms
[20:50:41] Finished 'clean:javascript' after 17 ms
[20:50:41] Finished 'clean' after 19 ms
[20:50:41] Starting 'build'...
[20:50:41] Starting 'copy'...
[20:50:41] Finished 'copy' after 36 ms
[20:50:41] Starting 'sass'...
[20:50:41] Starting 'javascript'...
[20:50:42] Starting 'lint'...
[20:50:42] gulp-notify: [Sass Error] assets/scss/global/_settings.scss
Error: File to import not found or unreadable: ../../components/foundation-sites/scss/util/util
       Parent style sheet: /home/USERNAME/code/foundationpress/assets/scss/global/_settings.scss
        on line 43 of assets/scss/global/_settings.scss
>> @import '../../components/foundation-sites/scss/util/util';
   ^

@hackingoff I have almost similar local environment and ran into same error a week ago or so. Bower components were getting installed into /bower_components/ , not /components/.
Using fresh install today, build runs beautifully with no errors:
`><EMAIL_ADDRESS>build /var/www/html/wp-content/themes/FoundationPress220316

gulp build

[09:12:07] Using gulpfile /var/www/html/wp-content/themes/FoundationPress220316/gulpfile.js
[09:12:07] Starting 'clean'...
[09:12:07] Starting 'clean:javascript'...
[09:12:07] Starting 'clean:css'...
[09:12:07] Finished 'clean:javascript' after 51 ms
[09:12:07] Finished 'clean:css' after 32 ms
[09:12:07] Finished 'clean' after 62 ms
[09:12:07] Starting 'build'...
[09:12:07] Starting 'copy'...
[09:12:07] Finished 'copy' after 380 ms
[09:12:07] Starting 'sass'...
[09:12:11] Starting 'javascript'...
[09:12:15] Starting 'lint'...
[09:12:29] Finished 'lint' after 14 s
[09:12:29] Finished 'sass' after 22 s
[09:12:34] Finished 'javascript' after 23 s
[09:12:34] Finished 'build' after 27 s
`

Attempted reproducing issue today. Issue didn't recur.
Wish I had something more informative to share. Either something changed over night, or there was some silly user error like PATH stuff or not re-sourcing nvm.sh in a terminal session.
Either way, thanks.


Support syntax like path. insted of path:

path = require "path".new('/')
-- Now
path:join(...)
--New
path.join(...)

Done in e479b2e8e58581b3c8b8d075b46f02efa93dbef1


Refactor: simplify req.path getter

Removed redundant function name from the req.path getter for improved readability. The function now directly utilizes the concise function expression.

@Ayoub-Mabrouk Thanks, but this is a style change that doesn't bring any improvement.


How to getOptions?

Seriously, there is no function to return the options set for the network? there is setOptions, but no getOptions()?
I found someone's jsfiddle try to demonstrate the problem.
http://jsfiddle.net/e7Lg99n9/102/

With configure: true, I can retrieve with this network.configurator.getOptions().physics.
But then it will show the whole configuration UI below.
If I filter it out by
configure: {
enabled: true,
filter: false
}
then nothing will return.


No Matches Found

My error when I  use my discord bot to play music is this :
2020-10-16 20:47:08.713  WARN 12316 --- [ader-2-thread-1] c.s.d.l.s.youtube.YoutubeSearchProvider  : Failed to match ytInitialData JSON object
2020-10-16 20:47:08.713  INFO 12316 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : No matches found

The search is a very simple piece of music that is the first video on youtube when searched.
Here is my version:
Version:        <IP_ADDRESS>
Build:          1111
Build time:     09.10.2020 14:42:03 UTC
Branch          master
Commit:         19972c2
Commit time:    04.10.2020 15:12:22 UTC
JVM:            13.0.2
Lavaplayer      <IP_ADDRESS>

Here is my OpenJDK version:
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

This error is weird because 50% of the time it plays the song with the exact same search and sometimes it doesn't. I haven't figured out what is causing the error.

Duplicate of #365


Allow search indexing in promo mode

this fixes #329

@edwardhorsford look alright now?

Stylistically yes, but still need to test.

Looks good to me 👍


Scheduling extension support

Breaking change

Proposed change

Adds back scheduling support in the new model.

[x] Add scheduling
[x] Fix Dispose call bug
[ ] Add tests
[x] Add push to nuget

Type of change

[ ] Dependency upgrade
[ ] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (which adds functionality to an existing integration)
[ ] Breaking change (fix/feature causing existing functionality to break)
[ ] Code quality improvements to existing code or addition of tests

Additional information

This PR fixes or closes issue: fixes #
This PR is related to issue:
Link to documentation pull request:

Checklist

[ ] The code change is tested and works locally.
[ ] Local tests pass. Your PR cannot be merged unless tests pass
[ ] There is no commented out code in this PR.
[ ] I have followed the [development checklist][dev-checklist]
[ ] The code compiles without warnings (code quality chek)
[ ] Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated for www.home-assistant.io

Codecov Report

Merging #500 (719532d) into dev (67f7842) will increase coverage by 5.76%.
The diff coverage is 20.71%.

@@            Coverage Diff             @@
##              dev     #500      +/-   ##
==========================================
+ Coverage   14.94%   20.71%   +5.76%
==========================================
  Files         128        2     -126
  Lines        4890      169    -4721
  Branches      740        9     -731
==========================================
- Hits          731       35     -696
+ Misses       4108      133    -3975
+ Partials       51        1      -50

Flag
Coverage Δ

unittests
20.71% <20.71%> (+5.76%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...Daemon.Extensions.Scheduling/NetDaemonScheduler.cs
18.35% <18.35%> (ø)

...NetDaemon.Extensions.Scheduling/DisposableTimer.cs
54.54% <54.54%> (ø)

...p/Common/ApplicationContexts/ApplicationContext.cs

...aemon/NetDaemon.Daemon/DependencyInjectionSetup.cs

...nRunner/DaemonRunner/Service/App/DaemonCompiler.cs

...mon.HassModel.CodeGenerator/Generator.Entitites.cs

.../NetDeamon.HassModel/Common/HaContextExtensions.cs

src/Daemon/NetDaemon.Daemon/Daemon/AppManager.cs

...pp/NetDaemon.App/Common/Reactive/ObservableBase.cs

...mon/NetDaemon.Daemon/Daemon/TextToSpeechService.cs

... and 120 more

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 67f7842...719532d. Read the comment docs.


Add Icon for Tubular

Description

Add Icon for Tubular (https://github.com/polymorphicshade/Tubular)
A slight edit to the original newpipe logo of the icon pack to create an icon for tubular
Icons addition information

Added
Tubular (org.polymorphicshade.tubular)
Contributor's checklist

[x] I made the icons following the Lawnicons Guidelines (upd. Jan 2024) and will make changes if someone suggests. I will also make sure that Lawnicons builds correctly.

I have considered removing the circle and making larger the triangles but decided to keep it like this to maintain consistency with other icons (such as the newpipe logo), if the maintainers think the other option may be better I'm open to change it.

The modified version, it may need some minor tweaking to conform to guidelines

It should conform with the guidelines now

Current pull request version of the tubular logo

Modified version of the tubular logo

Lawnicons version of the newpipe logo, the tubular logo is based on the newpipe logo.

Hey!
If you want to keep the circle, then it is worth to reduce the density of the arrows by applying the 10px stroke.
I think the circle is unnecessary because it makes the icon less unique. I would keep the version with 2 arrows.

I mainly put the circle just for consistency but I agree that the other one is more unique and readable, changing

It remains to correct the stroke width and after that to refine the size.

fixing

It remains to refine the size.

I'm not sure why the checks are failing, cloning and building on my machine is working

I'm not sure why the checks are failing, cloning and building on my machine is working

This will be fixed by #1824. Sorry for this.

 It remains to refine the size.

I have struggled a bit with inkscape and managed to get everything correct this time (I think), updating


Disable HTTP/2 for webhook

We need to disable HTTP/2 for webhooks.
"
The go runtime does have a fix to mitigate the CVE-2023-44487 to a degree, but as https://github.com/kubernetes/kubernetes/issues/121197 shows, a single connection attempting to perform a denial-of-service attack against a go-based HTTP/2 server resulted in the server process quickly consuming 5 GB of memory. Additional connections would likely result in an OOM situation very quickly.
"
Please check this: https://github.com/kubernetes/kubernetes/issues/121197
/kind security

@tektoncd/core-maintainers what do we do around https://github.com/advisories/GHSA-qppj-fm5r-hxr3 ? As linked by @khrm in https://github.com/kubernetes/kubernetes/issues/121197 most project seems to disable HTTP/2 server for webhooks (or "force HTTP 1.1" which is the same for now 😛 ) to make sure they are not exposed to this.

@khrm @vdemeester is this still a critical/urgent?

From @khrm - this fix comes from knative, we should update our dependency when it is fixed

/assign @khrm


Glassed detection and location

Excuse me ,im a PhD student and now solving the glassed detection problem.
Thank you very much for you opened MeGlass dataset.
And will you open you code in your paper later?

My future plan is to release the code for adding eyeglass in a binary format, but it may need some time.

that's cool.
I will keep watch this repo.


Version 0.1.3

Cleaning Data Frame for any Table Scraping

[x] Issues #2
[x] Issue #3
[x] Publish New Version to PyPi (include screenshots)


Mount the custom kubelet root directory into non-root-enabler container when is different from default

What type of PR is this?

/kind bug
What this PR does / why we need it:
Mounts the custom kubelet root directory into non-root-enabler container when this is different from default kubelet
root directory. For example, this is located outside /var/lib folder which is already mounted in non-root-enabler container.
This required in order to allow non-root-enabler container to set up the security profiles configuration for daemon.
Which issue(s) this PR fixes:

Does this PR have test?

Special notes for your reviewer:
Does this PR introduce a user-facing change?

Mount the custom kubelet root directory inside non-root-enabler container when is different from default.

/assign @saschagrunert

Codecov Report

Merging #1447 (176b945) into main (51f3464) will decrease coverage by 0.06%.
The diff coverage is 0.00%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1447      +/-   ##
==========================================
- Coverage   44.08%   44.02%   -0.06%
==========================================
  Files          50       50
  Lines        5660     5667       +7
==========================================
  Hits         2495     2495
- Misses       3045     3052       +7
  Partials      120      120

/test all

/retest


Web-site is down?

Seems like web-site is not working anymore:

It's available at https://bvaughn.github.io/react-virtualized/ though.

Looks like the domain record expired. Oh well. I'll update the GH page.

down again


//tensorflow/python:Sparse_split_op_test  is failing on Big Endian

Environment info
Operating System: Ubuntu/Red Hat
Installed version of CUDA and cuDNN:  Not installed
The output from python -c "import tensorflow; print(tensorflow.__version__)". 0.8.0
If installed from source, provide

The commit hash (git rev-parse HEAD) [ 4b7bc31]
The output of bazel version 0.3.0

Steps to reproduce

Run bazel test //tensorflow/python:Sparse_split_op_test

Logs or other output that would be helpful
It was observed that this particular test consists of row-wise and column-wise split of tensor.
Test is failing on execution of column wise tensor split in case of Big Endian.
Please check attached stack-trace.
sparse_split_test_log.txt
I checked the test is passing in case of  Little Endian (Ubuntu, Red Hat)

@girving this looks like a bug but the code author isn't in the tf org. Would you assign appropriately?

@jparinita Is that the only test that fails?  I'm particularly curious whether any simpler tests exercising TensorShape might fail.

@girving
There were many tests failing from //tensorflow/... test suite.
Looks like  tensorflow is not supporting Big Endian as of now.
We have made changes to source code to add big endian support ( changes for const bool kLittleEndian variable)
With code changes, most of the tests are passing like
//tensorflow/contrib/framework:ops_test
//tensorflow/core:framework_op_kernel_test
//tensorflow/core:util_sparse_sparse_tensor_test

However, we still couldn't figure out why Sparse_split_op_test is failing.

@jparinita That you for the fixes so far!  Would you be interested in sending them as a PR so I can see how TensorFlow is currently broken (and make it slightly less broken)?  My best guess is still that it's a bug in TensorShape, but I don't know where.
Note that TensorShape has been heavily optimized to avoid memory allocations, which involved quite a lot of case analysis.  It's possible that some of these cases are now correct in big endian and others are not.

@girving
Could you please let us know the test "Sparse_split_op_test" which is failing can be ignored? Or is it used to test some complex functionality of TensorFlow?
About PR for Tensorflow,  I have built TensorFlow version 0.8.0 for big endian and also executed test cases for same version. I made few code changes related to big endian in the source code that I git cloned from tag 0.8.0.
Now, I am trying to build TensorFlow master on big endian and I am facing few build issues.
Issues like:

has a dependency on protobuf and need changes here.
Facing issue as 'Packet4f' does not name a type
This one is related to EIGEN_VECTORIZE_SSE2.

I haven't faced them on v0.8.0 before.
I am looking into above issues.
Once I could fix these issues and able to build master, I will create a PR .

@jparinita sparse_split_op_test mostly just tests that one op, but there's a good chance that the failure is in core functionality rather than that op so it's worth debugging.

Removing my assignment since I can't debug this personally.  Still happy to help with advice and code reviews.

@girving
Since TensorFlow v0.9.0 was released, I have built v0.9.0 on big endian platform and currently executing tests.
sparse_split_op_test is failing on v0.9.0 as well.  Additionally, there are few more test failures seen such as
//tensorflow/python:sparse_matmul_op_test
//tensorflow/python:string_to_hash_bucket_op_test
//tensorflow/python:conv_ops_test
//tensorflow/core/kernels:sparse_matmul_op_test_gpu
//tensorflow/python:determinant_op_test

I am debugging the code to find the root cause but no luck yet.
Above mentioned tests seem to be related to ops functionality (op_def_library.apply_op()).
Any suggestions would be helpful.

@jparinita I'd still suggest preparing a pull request of your changes so far.  It's hard for me to help without some idea what kind of changes need to be made.

@girving
We have created a PR  #4508 for TensorFlow with big endian changes.
Could you please have a look?
Any suggestions would be helpful to fix failing test cases mentioned above .

Cc @aselle for triage, since I'm OOO.

@aselle  Could you please have a look?

I will look at this first thing tomorrow.

I looked at the code you changed, and it seems plausible. I also Could you post the test logs from the failing tests. I checked your code, and it looks like what you are doing is plausible. Obvious ways to check for more areas that need changing is grepping for reinterpret_cast's and uses of unions. Also, you might want to try compiling with -fno-strict-aliasing to see if a you are hitting some strict aliasing problems.
I would like to help more, but I can't reproduce your big endian test, because I have no easy access to a   machine that is big endian. Do you know of an easy environment to build/run big endian code?

More notes,
Also, in terms of looking at TensorShape which Geoffrey thought might be an issue. It looks like things would mostly be ok. One question is whether your architecture has alignment restrictions for uint16 for uint8 and uint32's. It looks like we aren't doing manipulations as anything but the word size and bytes, which probably is safe. You should insert
static_assert(sizeof(Rep16)==12, "rep16 not 12 bytes");
static_assert(sizeof(Rep32==12), "rep32 not 12 bytes");

into TensorShape inside tensor_shape.h.
If you have valgrind, you might try running that to see if any buffers are being run-off.

@aselle
Thank you for your comments.
We are working on your suggestions for big endian.
Do you know of an easy environment to build/run big endian code?
==> Will it be ok if we provide our big endian vm as an extension to TensorFlow CI?

Can you describe the endian VM? How much slower is it than a native system? Is the emulator and software open source code? I'll look into how hard it would be to put that in our testing infrastructure. @gunan and @martinwicke  can also comment.

For now, I think it is possible to hook it up to our test infra for daily tests.
But in the near future we will transfer management of our test infra, and in that case we will be quite limited.

@aselle   @gunan
Can you please provide more details on how the current CI infrastructure is ?
Also, I need below details in order to setup the CI infrastructure on z Systems (big endian):

How frequent the CI runs on average?
What is the recommended H/W and configuration requirement?
Special S/W requirements (if any).

@aselle  @gunan Could you please provide details on the current CI infrastructure ?

About our CI:
Looking back at our future plans, we will be retiring our self maintained CI. Therefore, we ourselves would like to avoid adding more machines/setups to that to avoid making our final move more complicated.
Therefore, we decided against running a big endian machine/VM in our CI. I would be happy to help you if you wanted to setup a CI with your machines for this. And we will be happy to accept any patches you might provide.
Currently, our CI runs the scripts here:
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/ci_build
Which should work for you as well.
About the failure you are seeing, I would defer to someone else with more in-depth information about the ops.

@gunan
We will be glad, if any kind of assistance in maintaining the zSystem VM in the CI by our team can change your decision.
Please let us know.

@aselle
We have compiled TensorFlow with -fno-strict-aliasing flag and executed tests however we have observed same failures as before.
We have also checked if our architecture has alignment restrictions for uint8,  uint16 and/or uint32's by adding static_asserts as suggested. However, we didn't find such restrictions ( sizeof Rep16 and Rep32 are 12 bytes)

Probably the next thing  I would try is debugging further. So the next step is to look at the failing tests in more detail. You can compile in debug mode both on your architecture and a supported architecture and use a debugger to step through the statements until you find a mismatch.

@aselle Thanks for your comments.
We have built TensorFlow using '-dbg' flag on s390x architecture.
We are trying to debug the failing test-case using gdb.
Is there any documentation available which we can refer for debugging?

@aselle @girving
We are currently debugging  //tensorflow/python:string_to_hash_bucket_op_test on s390x as well as x86 architecture.
We could see that the mismatch of values is happening in def create_op() from ops.py .
We could observe that the  op.outputs is populated after  _add_op(self, op) is being called:
ret = Operation(node_def, self, inputs=inputs, output_types=dtypes,
                    control_inputs=control_inputs, input_types=input_types,
                    original_op=self._default_original_op, op_def=op_def)
    if compute_shapes:
      set_shapes_for_outputs(ret)
-------------> **here,  ret.outputs[0].eval() gives NotFoundError**
    self._add_op(ret)
-------------> **here,  p ret.outputs[0].eval() gives array([3, 5, 7]) ( expected output is array[4,2,8])**

    self._record_op_seen_by_control_dependencies(ret)

We tried debugging function _add_op() , however couldn't find where the op.outputs is getting populated.
Also, we could see self.lock being used in this function. Is some other thread populating these values?

@Nayana-ibm I don't know offhand, and my next step at this point would just be adding print statements until I did know.  I'm not sure what you mean by self.lock: Python graph construction is not thread safe, and is typically single threaded.

@girving We are using pdb to debug test case and tried to print the op.outputs[0].eval() . The mismatch we could observe after _add_op(self, op) is being called as below:
ret = Operation(node_def, self, inputs=inputs, output_types=dtypes,
                    control_inputs=control_inputs, input_types=input_types,
                    original_op=self._default_original_op, op_def=op_def)
    if compute_shapes:
      set_shapes_for_outputs(ret)
-------------> **here,  ret.outputs[0].eval() gives NotFoundError**
    self._add_op(ret)
-------------> **here,  p ret.outputs[0].eval() gives array([3, 5, 7]) ( expected output is array[4,2,8])**

About self.lock, this is used in the definition of _add_op function( filename: python/framework/ops.py):

with self._lock:
      # pylint: disable=protected-access
      if op._id in self._nodes_by_id:
        raise ValueError("cannot add an op with id %d as it already "
                         "exists in the graph" % op._id)
      if op.name in self._nodes_by_name:
        raise ValueError("cannot add op with name %s as that name "
                         "is already used" % op.name)
      self._nodes_by_id[op._id] = op
      self._nodes_by_name[op.name] = op
self._version = max(self._version, op._id)

In self.lock is defined in def init(self) from Graph object as (filename: python/framework/ops.py):
self._lock = threading.Lock()
self._nodes_by_id = dict() # GUARDED_BY(self._lock)

Ah, maybe it is thread safe! :)  In any case, I would be surprised if the problem was at the Python level, but I don't think I'll be able to help much in debugging this remotely since I can't tinker.

@mrry Can you please have a look at this issue and share your views?

@Nayana-ibm I agree with @girving: The problem almost certainly isn't in Python (unless there's an endianness bug in the Python runtime itself), but is more likely to be in either the OpKernel for the op that is failing or its C++ shape function. I'd suggest using gdb to step through these functions and see where they go wrong.

https://github.com/tensorflow/tensorflow/pull/6686
This test is now passing on big endian system. Fixed through PR #6686

@girving @gunan
To extend my post on CI:
We would like to know that how TensorFlow CI can be extended to support z system.
Please let us know what support will be required from IBM side. We are aware on the H/w support.
We can provide s390x machines on which we will setup Jenkins slave node to build TensorFlow. T
he present Jenkins master will manage this node and post the s390x build results to GitHub.
Please let us know your comments.

@Nayana-ibm As far as support goes, I cannot really promise we can fully support ourselves as we do not have big endian machines. So we cannot give first class support for this platform.
But I can help setup our jenkins to run all TF tests on your machines periodically. When there are failures, most probably we will escalate the issues to you, if they seem to be specific to your machines, and we will be available to consult resolving issues. You will retain ownership of these machines. I will help you setup all our dependencies on them, and as long as your machine is healthy and up, our jenkins master will schedule tests on your machine.
How does this sound?

@gunan
This sounds good to us.
As per my understanding,  we will provide you a Jenkins slave node which will be added under your master. Correct? Also, wanted to know how the build results will be shared with us? through GitHub issue? Please let me know.

Sorry for the delay, my inbox is going crazy these days.
Yes, you will have the machine maintained by you, and I will provide you instructions to setup the machine for tensorflow builds. The build results will be visible through ci.tensorflow.org. You will have access to all build logs through ci.tensorflow.org.
I can even set you up with access to start and stop the specific build for s390x.

@gunan
Thanks for your support.
Could you please let me know what's the recommended H/W configuration required? and
S/W requirements (if any).

Sorry for the delay, looks like I wrote up the response but forgot to send.
For H/W requirements, completely up to you. Obviously, the beefier the machine is, the quicker code is tested. But I wont block code submissions on this so we can tolerate some delays here.
S/W requirements, you will need all TF dependencies on your machine installed. We usually run all our tests in a docker container, but in this case I dont think we need docker.
Our jenkins will simply execute:
git checkout <commit>
<set some environment variables>
yes "" | ./configure
bazel test tensorflow/...

Thank you for your inputs.
We are setting up machine with all TF dependencies.
I could see Tensorflow supports Ubuntu 14.04 ( Ref: https://www.tensorflow.org/install/install_linux)
however we are planning to build the TensorFlow on RHEL and Ubuntu on s3890x platform.

I just verified that with bazel I can build on CentOS 7 without any issues.
I expect a similar experience with RHEL.
However, we do not have official RedHat support, so we will possibly redirect Redhat specific build issues to you in this build.

@gunan
We have procured the s390x vms with Ubuntu 16.04 distribution.
Also, installed the dependencies like bazel, python-setuptools etc.
Please let me know the procedure to add those vm's under TensorFlow CI .

Great!
Could you email me? my github username @ companyname is the address
We can continue the conversation there.

@gunan
Will you please email me on<EMAIL_ADDRESS>

Closing this issue as it was originally opened for test case failure.
Also, we have completed Tensorflow CI for s390x.
@gunan Thank you for your help and support.


We are an app, we should not use floating versions

cc @paetling

other than you broke all the things. seems legit


Not able to import l10n to localize string in .ts file.

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

VS Code Version:
OS Version:

Steps to Reproduce:

When user switch Japanese , i want to convert user notify string japanaese which present in .ts file
The string will be like this

How can i convert the string highlihted in .ts file to japanese when user switched locale to Japanese. Is there any way other than using l10n package.

vs code version : 1.73

Try this sample out:
https://github.com/microsoft/vscode-extension-samples/tree/main/l10n-sample
You should use the new l10n API that's built-in to VS Code's API

We closed this issue because it is a question about using VS Code rather than an issue or feature request. Please search for help on StackOverflow, where the community has already answered thousands of similar questions. You may find their guide on asking a new question helpful if your question has not already been asked. See also our issue reporting guidelines.
Happy Coding!


Ensure RequestSpecBuilder picks up filters from static config (#1012)

This PR should resolve #1012 by making sure that filters are passed to RequestSpecificationImpl upon creation.

Looks like static headers aren't picked up either, I'll have a look at that too, as it seems to originate from the same place.

Thanks a lot for the PR! Very appreciated.


Pubsub to Gcs template review

Hi,
Please ignore the previous pull request https://github.com/GoogleCloudPlatform/dataproc-templates/pull/88
I have addressed all the previous review comments in this new pull request except the following:

PubSubToGCS:runTemplate()  needs to have try-catch block because of the presence of JavaStreamingContext.awaitTerminationOrTimeout() method
If pubsub messages are coming in JSON format then the multuple pubsub records will be merged into a single file before writing to GCS. Same support needs to be added for Avro and I can  research it and do it in a later point.

Testing:
Successfully tested Avro and Json formats and output data was written to gs://pubsubtogcs_dev/output folder.

@jirilmongeorge-google pull request looks good.
Can you please add integration test for same in Jenkins Pipeline before we merge it into the codebase.

Completed integration testing for this template (used a pub/sub topic subscription snapshot)


Jenkins: Update openjdk 12 version

Summary of the changes / Why this improves CrateDB
-1 is no longer available
Checklist

[x] User relevant changes are recorded in CHANGES.txt
[x] Touched code is covered by tests
[x] Documentation has been updated if necessary
[x] CLA is signed
[x] This does not contain breaking changes, or if it does:

It is released within a major release
It is recorded in CHANGES.txt
It was marked as deprecated in an earlier release if possible
You've thought about the consequences and other components are adapted
(E.g. AdminUI)

retest this please


disable issues for this repository

all issues goes to the main repository "makefile-collection"

ok, validé


Fixed alert bugs related to project id and domain id showing up instead of project and domain names

Category

[ ] New feature
[X] Bug fix
[ ] Improvement
[ ] Refactor
[ ] etc

Description
Known issue

LGTM  👍


Cannot open include file: 'bl-qt-static.h': No such file or directory

As stated in the title, i cant build (on windows) due to bl-qt-static.h not being located. Ive looked in the sources (locally and github) and cant seem to find it anywhere, is this a generated file or something?
Am i doing something drastically wrong?
Cheers,
Ian

No, the file is unfortunately missing. It's actually not doing anything, I will fix this.

Should be fixed by https://github.com/blend2d/blend2d-samples/commit/46deb4a1cd3d7026c5efeea5e417307f87ee8ee4

Great, thanks!


ts(2366) CFA can't tell that switch(x % k) is exhaustive

🔍 Search Terms
The most related issue I found was #51199. Here is some code I wrote
type ObjectEntry = {
  y: number;
  x: number;
  tileIndex: number;
  flags: number;
}

export class PPU {
  _oam = new Array<ObjectEntry>(40).fill({y: 0, x: 0, tileIndex: 0, flags: 0});
  readOam(addr: number): number { // ERROR: Function lacks ending return statement and return type does not include 'undefined'. ts(2366)
    if (addr < 0 || addr >= 0xA0) {
      throw new Error(`Invalid OAM address ${addr}`);
    }
    const entry = this._oam[addr/4];
    switch (addr % 4) {
      case 0: return entry.y;
      case 1: return entry.x;
      case 2: return entry.tileIndex;
      case 3: return entry.flags;
    }
  }
}

This is some code that I expected to compile without a problem. I thought that the switch was guaranteed to match because addr % 4 can only be 0-3.  This is actually not true. addr = -0 would return undefined because -0 % 4 = -0. However I tried adding a case -0: and I tried switch (Math.abs(addr) % 4) {, either of which should prevent this odd case and typescript didn't fix it.
More generally, as a user I wish the CFA could give some feedback about why it thinks the switch isn't exhaustive. Maybe there should be some way I could declare that I think the switch is exhaustive and Typescript can return an error if I'm wrong, e.g. a new keyword:
switch (addr % 4) exhaustive {

Would explain which cases are not handled if the CFA failed to prove it was exhaustive. Even if it explained its limitations e.g. "exhaustive switch over type number is unsupported" would be helpful. Now that I'm at the end of typing all this I realized I never considered infinity or NaN!
Anyway, I was just opening this ticket as some real world feedback. If nothing seems feasible to implement, feel free to close it. Thanks for your work on TypeScript!
✅ Viability Checklist

[X] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[X] This wouldn't change the runtime behavior of existing JavaScript code
[X] This could be implemented without emitting different JS based on the types of the expressions
[X] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[X] This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals

⭐ Suggestion
see above
📃 Motivating Example
see above
💻 Use Cases

What do you want to use this for?
Code like the above example
What shortcomings exist with current approaches?
I can't tell if I'm smarter than the CFA or if I'm forgetting something
What workarounds are you using in the meantime?
I would just add a throw before end of the function and I would never know how it could be reached at runtime.

-5 % 2 == -1 as well.
This doesn't seem like a common-enough pattern to warrant new support for. Adding this line resolves the type error and handles any cases where a negative number ends up in your array.
    switch (addr % 4) {
      case 0: return entry.y;
      case 1: return entry.x;
      case 2: return entry.tileIndex;
      case 3: return entry.flags;
      default: throw "unexpected addr";
    }

The case -5 should have been caught by the if check though. -0 is insidious because addr < 0 evaluates to false. This is the kind of JS footgun that it would be nice if TypeScript could warn about. But I'll close the issue for now unless there is popular demand.

Wait, doesn't case 0 also match negative zero?  Since 0 === -0 is true (you need to induce a SameValue comparison to get them to be different, and I don't think switch does that)

There are other corner cases, like fractions, infinities and NaNs.


Enh: Add zoom options and keybindings to View menu

References and relevant issues
Closes https://github.com/napari/napari/issues/4855
Description
This PR adds menu items and "standard keybindings" for Zoom in, Zoom out, and Reset Zoom to the View menu.
The keybindings are Qt defaults (https://doc.qt.io/qtcreator/creator-keyboard-shortcuts.html#image-viewer-shortcuts), as well as defaults on macOS and Windows (see e.g. Adobe Photoshop or Chrome)
Note: I've made a PR to app-model to add the Reset Zoom standard keybinding (https://github.com/pyapp-kit/app-model/pull/220) so if that is merged I can edit this PR to use that here too!
I added to a test for the new behavior.
Note, this approach does not present these as editable in the napari Preferences. I
These are bound like an OS default would be, e.g. copy, paste, etc. They are editable on the OS level at least on macOS.

@lucyleeow
I was shocked how easy this was, compared to the last time I did anything with menus (Help menu). I felt like I must be doing something wrong, but I think I did everything ok?!?! Kudos to the overhaul you spearheaded!
We should probably update the example here tho:
https://napari.org/stable/developers/architecture/app_model.html#actions
https://napari.org/dev/developers/architecture/app_model.html#menus-in-napari
Right?

So https://github.com/pyapp-kit/app-model/pull/220 has been merged.
Depending on the response to this PR we can either wait for an app-model release -- we've been bumping our app-model minimum with new releases, right? -- or not.

One note, for me on linux the zoom in keybinding is shown as 'ctrl+=', is that normal?

I'm using the app-model Standard keybinding. = and + are the same key. Looks like macOS (and windows?) shows it as +, I guess because it's the opposite of -, but + character requires Shift to type.

Note: I've made a PR to app-model to add the Reset Zoom standard keybinding (https://github.com/pyapp-kit/app-model/pull/220) so if that is merged I can edit this PR to use that here too!

It has been merged, so I guess we can wait with this PR for a release of app-model?

I'm using the app-model Standard keybinding. = and + are the same key. Looks like macOS (and windows?) shows it as +, I guess because it's the opposite of -, but + character requires Shift to type.

Hmm yeah it seems like app-model only has equal (for which the virtual key is plus, though not sure what that means) - and this just ends up as = on linux

@DragaDoncila yes! it was much easier, I thought I was doing something wrong! See: https://github.com/napari/napari/pull/7200#issuecomment-2294879900

Amazing! I don't know how I missed the comment: https://github.com/napari/napari/pull/7200#issuecomment-2294879900 but I'm glad it's easier now. Indeed I am considering closing https://github.com/napari/napari/issues/6516 for now, and opening a new issue if we find any new problems later. WDYT?

I think the outstanding issue is

Shortcuts are defined currently in Action, but it prevents them from being editable. But the rest of the shortcuts are defined in napari/utils/shortcuts.py

The interaction between app-model action keybinds and the Prefereces/napari keybinds is still problematic.

The interaction between app-model action keybinds and the Prefereces/napari keybinds is still problematic.

fully agreed, I'd say that's well and truly tracked by #7059 and friends though, so probably not worth keeping #6516 open just for that?

Let me make that more explicit in https://github.com/napari/napari/issues/7059

@psobolewskiPhD app-model 0.3.0 just released, do you want to update this PR to use the standard zoom reset keybinding? I think you'll also need to bump the app-model dependency

Hmm is this where we should have been using the constraints bot rather than updating the files manually...? Is updating them manually fine, just annoying...? @Czaki

Is updating them manually fine, just annoying...?

I think this is true, bot would have just made it more convenient.

Ok, so to do fit to view, rather than reset, which rotates the camera back, it's just removing this line:
https://github.com/napari/napari/blob/e861f809ce774bda0ff0c45038275a8b7c3f9b7e/napari/components/viewer_model.py#L429
So options are:

add a camera angle reset kwarg to reset view
add a new method that basically is reset_view without the angle--public? private--and then make reset_view call that plus the angle
add a dedicated function for this task to this PR

I'm open to all three options (private new method please), but prefer option 1, with default to True.

I'm open to all three options (private new method please), but prefer option 1, with default to True.

I added the kwarg to reset_view and changed the View menu item to Fit to View.
Tested locally and added it to the test.

I like "fit to view" or "fit to canvas". So I'm happy to merge this PR as-is. And I like very much that we have this functionality now @psobolewskiPhD! 😊 🙏


make mousetraps damage your feet

About the PR
mousetraps, glass shards and d4s now target your feet
@gluesniffler backport to ee for me pls :trollface: patch is CC0-1.0
Why / Balance
it makes sense
Technical details
DamageUserOnTrigger has TargetPart field, set to Feet by default. can be removed or set to anything else in yml
Media

Requirements

[X] I have read and am following the Pull Request and Changelog Guidelines.
[X] I have added media to this PR or it does not require an ingame showcase.

Breaking changes
no
Changelog
:mouse: exclaims, "Piep!"

Make an actual changelog please.

Ported it, will PR it later along with the morbillion changes from the ports.


Border color is wrong!

By defalut border has slightly transperent grey color. Which is great.
But when we apply any style to a cell, even without a border style, border disapears.
We could apply some style to the border, but it's either black, or some static color.
No way to make it transperent or to clear it!
That ruins the whole thing! Why no one said about it already?
Look how the default border looks, and how ugly is the black one:

This is the workaround that I found for myself.
The tint() generate appropriate border color for given background color:
interface RGB {
  r: number,
  g: number,
  b: number,
}

export function hexToRgb(hex: string): RGB {
  // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
  const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
  hex = hex.replace(shorthandRegex, (m, r, g, b) => {
    return r + r + g + g + b + b;
  });

  const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  return result ? {
    r: parseInt(result[1], 16),
    g: parseInt(result[2], 16),
    b: parseInt(result[3], 16)
  } : { r: 0, g: 0, b: 0 };
}

export function rgbToHex(rgb: RGB) {
  return componentToHex(rgb.r) + componentToHex(rgb.g) + componentToHex(rgb.b);
}

function componentToHex(color255: number) {
  const hex = color255.toString(16);
  return hex.length == 1 ? '0' + hex : hex;
}

export function tint(hex: string, opacity: number = 0.9): string {
  const rgb = hexToRgb(hex);
  Object.keys(rgb).forEach(key => {
    rgb[key] *= opacity;
    rgb[key] = Math.round(rgb[key]);
  });
  return rgbToHex(rgb);
}


Add monitor interface for SIGCHLD reapers

This will allow callers of this package to register their own monitor so
that they can handle SIGCHLD events and reap processes daemon wide
without causing races between Go's exec.Cmd.Wait() and the reaper
Signed-off-by: Michael Crosby<EMAIL_ADDRESS>

LGTM

LGTM


Clarify syntax for the array type

Is there any convention in the mix docs format that says "replace this with a valid value"?
If you're reading a shell script and you see $FOO you know to either set an environment variable or replace that bit.
I got stuck on {:array, inner_type} here and did not 'get' that I should replace the text inner_type with, for example :string. It is of course blindingly obvious in retrospect, but it wasn't at the time. :)
This adds a note to clarify what to do with inner_type.

:heart: :green_heart: :blue_heart: :yellow_heart: :purple_heart:


use getter methods instead properties. the properties may change with…

… new version of google maps

@grundid duplicate of https://github.com/vskosp/vsGoogleAutocomplete/pull/3


Fix stack overflow of bash when copying tf headers

Fixes issue described in #87. Putting together the copy command for tf headers in tf_configure.bzl using " && " causes a stack overflow in msys2 bash.exe on windows. Executing each copy as a single command (via "\n") prevents this.

This would also totally help my project! There might be other issues down the line and we would be glad to track and fix them!


Fix 3997 Document / Image search on query change only

Fixes #3997 by ensuring that a new ajax search query (+ history push state) only triggers when the search query actually changes. eg pressing the 'up' key does not change the query but adding a letter does.
Also, added the search function to trigger on input change, I noticed that if you select a value from the browser auto-fill.
JS linting run, tested on Chrome 62, Firefox 48.0.2 and Safari 11.0.1 all on macOS 10.12.6

Thanks @lb- I'll have a look at it tomorrow.

Thanks! Merged with 7c54c14


Doesn't compile under windows

Description
Can't get it to work under windows.
Can't compile the example in windows due to the following error:
(this is with the 1.11beta2, with the normal released version in windows. the Realesed 1.10.x version get issues with the filname path to long, but this is a go win issue. Its fixed in 1.11)
c:/program files/mingw-w64/x86_64-7.2.0-win32-seh-rt_v5-rev1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: Error: export ordinal too large: 74588
When I cross compile it in Linux I get the following errors:
go build -buildmode=c-shared -o simple.dll FSM.go
github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar /home/dio/.go/src/github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar/wchar.go:15:12: undefined: convertWcharToGoRune /home/dio/.go/src/github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar/wchar.go:23:9: undefined: convertGoRuneToWchar /home/dio/.go/src/github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar/wchar.go:47:9: undefined: convertGoStringToWcharString /home/dio/.go/src/github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar/wchar.go:128:14: undefined: convertWcharStringToGoString /home/dio/.go/src/github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar/wchar.go:141:9: undefined: convertWcharStringToGoString /home/dio/.go/src/github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar/wchar.go:150:9: undefined: convertWcharStringToGoString /home/dio/.go/src/github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar/wchar.go:158:9: undefined: convertWcharToGoRune
my go env:
GOARCH="amd64" GOBIN="" GOCACHE="/home/dio/.cache/go-build" GOEXE=".exe" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="windows" GOPATH="/home/dio/.go" GORACE="" GOROOT="/usr/bin/go" GOTMPDIR="" GOTOOLDIR="/usr/bin/go/pkg/tool/linux_amd64" GCCGO="gccgo" CC="x86_64-linux-gnu-gcc" CXX="x86_64-linux-gnu-g++" CGO_ENABLED="0" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-m64 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build621006750=/tmp/go-build -gno-record-gcc-switches"
Details

Go version
1.11beta2 windows /1.10.3 linux

OS
windows

In my case, i can't even 'go get' the files. it throws this error:
# github.com/shadowapex/godot-go/vendor/github.com/vitaminwater/cgo.wchar ..\github.com\shadowapex\godot-go\vendor\github.com\vitaminwater\cgo.wchar\convert.go:10:19: fatal error: iconv.h:                                          No such file or directory compilation terminated.

Don't know why it says "compile"
You can download it and add it manually to your GOPATH though.
This is at least an easy workaround for your problem.
But I guess the problem is with the compilation rather the "go get"

For me the error is the following:
C:\Go\bin>go get github.com/shadowapex/godot-go/godot
go build github.com/shadowapex/godot-go/godot: C:\Go\pkg\tool\windows_amd64\compile.exe: fork/exec C:\Go\pkg\tool\windows_amd64\compile.exe: The filename or extension is too long.


Bugfix and customize code

Contents

Bugfix for python3.x
Improvement for custom visualization (visualize event-image together)
Add our own readme

I added some comments in the code too.
Caveat
Because I forked the original repo, it is public visibility - so if we would like to make this private, let me know, I will setup the private repo.

Changed the default branch to tub-rip from master, and merge this PR into the branch.


Correct .gitignore for videos and screenshots created by running examples

This PR resolves issue https://github.com/cypress-io/github-action/issues/676 "locally created screenshots and videos in examples are queued for commit".
It corrects the syntax in .gitignore so that the screenshots and videos directories, which may be created through running examples locally, are correctly found and excluded from any git commit. Additionally the directory downloads is marked for exclusion.
The incorrectly committed directory examples/v10/chrome/cypress/screenshots is removed from the repository.
Verification

In a local clone of the repository, execute:

cd examples/v10/quiet
npm ci
npx cypress run --browser chrome
git status

and check that git finds no screenshots or videos to commit
$ git status
On branch master
nothing to commit, working tree clean

Check that cypress-io/github-action/examples/v10/chrome/cypress/screenshots no longer exists.

Note that the line
cypress/videos/
in .gitignore is ineffective and could be removed. It would only match at the top level of the repository, where there is in fact no cypress directory present.

@jaffrepaul

Great, thank you.

  One of several minor things that just need a bit of attention.
yarn also needs to be dealt with at some stage in .gitignore, but I would separate this out. It only affects two examples.

@MikeMcC399 this merge triggered a release. My fault, my plan is to cut a release with everything else we worked on very soon.

@jaffrepaul

this merge triggered a release. My fault, my plan is to cut a release with everything else we worked on very soon.

Sorry, if this was not in line with your plans. I was the one who added fix: into the commit. It was the first fix which generically affected the repository, the other fixes were about tools or examples tests. I struggled a little deciding in the past whether or not to label something a fix: because the action and examples of using the action are bundled into one repository, so is the version number only supposed to refer to the action or should it also refer to the examples?
I will check with you in future before using any of the release-triggering tags fix: / feat: / perf:.

@jaffrepaul

this merge triggered a release. My fault, my plan is to cut a release with everything else we worked on very soon.

Sorry, if this was not in line with your plans. I was the one who added fix: into the commit. It was the first fix which generically affected the repository, the other fixes were about tools or examples tests. I struggled a little deciding in the past whether or not to label something a fix: because the action and examples of using the action are bundled into one repository, so is the version number only supposed to refer to the action or should it also refer to the examples?
I will check with you in future before using any of the release-triggering tags fix: / feat: / perf:.

Not a problem. We're juggling a number of repos and I just didn't spot it. I'm happy to accept all the great fixes here, so we get them in even if it's a little clunky. This was a bit out of the normal routine here but I'm putting thought into how to better maintain these repos in the future, including the release strategy ✅

It's good that you are thinking about improvements. It seems that this repository has gathered dust over time and fixing it is a bit like peeling an onion, with layers of things which need to be looked at. This repository also links to many outdated examples, even non-working ones, in other repositories. These would also need reviewing at some stage.

Indeed.
Side note, you should join the Cypress Discord server.  If you shoot me a DM there, I can look into sending you some Cypress swag 🎉

Thanks for the recognition and offer! I have joined Cypress Discord with the same username as I´m using here on GitHub. I didn´t manage to find you there in order to connect up, so if you could either post your username or DM me, then we can move some of our conversations over there. I won´t be so active the next days though due to the holidays.


BlockId removal: refactor: Finalizer

It changes the arguments of methods of Finalizer trait from:
block: BlockId<Block> to: hash: &Block::Hash
This PR is part of BlockId::Number refactoring analysis (paritytech/substrate#11292)
cumulus companion: paritytech/cumulus#1779

bot merge


makefile: Pin black version

Black keeps updating in the background and breaking our
CI due to slightly different formatting between versions.
Fix this by pinning the version.

Reviews in this chain:
└https://github.com/Skydio/revup/pull/144 makefile: Pin black version

#
head
base
diff
date
summary

0
87d4e617
8009c60c
diff
Jan 29 10:32 AM
1 file changed, 1 insertion(+), 1 deletion(-)


Duplicate dashboard with optionally duplicate charts

Is your feature request related to a problem? Please describe.
We would like to have a feature that allow users to duplicate dashboard, and optionally duplicate (deep copy of ) charts associated with the dashboard.
Describe the solution you'd like
It would be great to have such feature as one of the items in the Action column in the dashboard list page (/dashboard/list/).
Describe alternatives you've considered
Also, it would be great to have such icon next to the report scheduling icon and before the 3 dots in the upper right corner of the single dashboard page, or put such icon in both dashboard list page and the single dashboard page.
Additional context
Add any other context or screenshots about the feature request here.

The red circle in attachments show the positions of the icon for this feature.

FYI, this can already be done in the dashboard view by clicking on ... in the top right hand corner, clicking "Save as", after which you're presented with this modal:

Having this feature in the list view might be useful in some cases, but this might be viewed as cluttering the view for users that don't need this feature.

@kevinwen2k can you confirm this meets your use case and if so, close this issue.

Yes, I just tested and it works! Closing it.


Add a tutorial for defining a linear problem

Should write up something about linear problems at some point. For example, showing how to write common problems like a linear heat equation (or linear with a space-varying, $u$-invariant diffusivity), a mean exit time problem, or Laplace's equation in the form
$$
\frac{\mathrm d\boldsymbol u}{\mathrm dt} = \boldsymbol A\boldsymbol u + \boldsymbol b,
$$
which can then be solved using the linear problem features in DifferentialEquations.jl. I don't want to create a whole interface for this (as I initially proposed in #17) since there's a few annoying things to deal with, but showing how it can be done is a good idea.

Perhaps one interface could be for problems of the form
\boldsymbol M\frac{\partial\boldsymbol u}{t} = \boldsymbol\nabla(\boldsymbol D\boldsymbol\nabla\boldsymbol u) + \boldsymbol f.


Rework SSD1351 initialization

Set width/height accordingly
Use bgr=True flag to indicate BGR rather than RGB color ordering
Revert formatting changes
Add init sequence test for 96x96 SSD1351 with BGR pixels

See recent comments in #192

Previously remap was OR-ed with 0x02 specifically for 96x96 device, but looking at P40 of the spec, setting A[2] is the RGB/BGR color mapping, so is not actually specific to the 96x96 device:

So it makes sense to abstract this out to the bgr=True parameter as per color LCD devices in luma.lcd.


Incorporate release-tooling into weco-deploy

To maintain release process and add hooks for new functionality.

For https://github.com/wellcomecollection/platform/issues/4637