drafts: Clicking on any message should open it for edit.

Here is what a sample draft looks like:

It'd be great if clicking anywhere in the main message area opened the message for editing.

@zulipbot claim

@khantaalaman I think what happened here is that you didn't properly mark the commit as closing this issue.  I see you did put it in the PR description; note that the commit message, not the PR description, is what matters!


Problems building LOS20 that I couldn't fix in code

I used (my fork of) this project to make a customised build of LineageOS for Microg. I have submitted the changes that I needed to make as a Pull Request . The build included the following extendrom packages:
AuroraStore AuroraServices BlissLauncher Bromite DAVx5 ICSx5 NextCloud  NextCloudNotes OpenTasks K9-Mail-latest Fennec QKSMS OpenCamera noLOSSnap noLOSEmail noLOSMessaging noLOSJelly
When I built the Android 13 / LOS 20.0 version, the build succeeded, but when the device booted, some of the apps were not present. The missing apps were Aurora Services, Bromite, DAVx5, ICSx5 ,Fennec
I was able to "fix" the problem by making changes to the automatically generated vendor/extendrom/Android.mk. For each of the missing target I changed the line
LOCAL_CERTIFICATE := PRESIGNED
to
LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
For the remaining targets (AuroraStore, BlissLauncher, NextCloud, NextCloudNotes, OpenTasks, K9-Mail-latest) I did not change the LOCAL_CERTIFICATE value, and the apps were present.
(The full patched file can be found at https://codeberg.org/attachments/9946cfb3-9b92-47c8-8f38-48e052269abf)
I found this "fix" in this commit in danielk43's android_vendor_partner_gms repo
I have no idea why the change is needed for some apps and not for others. (I believe it would also be needed for Phonesky but I'm not sure about that as Phonesky didn't make it into my final build for other reasons - see #24).
I have no idea what changes would be needed to make the change when the makefile is being generated.

It may be that the problem is the downloaded APK's for those apps are not pre-signed. (Suggested by this commit: https://github.com/Professor-Berni/android_vendor_AuroraServices/commit/d53311579430fd5f2aa24062a90576fb08cdcc76 from the maintainer of teh unofficial LOS builds for suzuran, who is now making builds with MicroG, F-Droid, Aurora Store and now Aurora Services)

OK I guess the format of repo/packages.txt was not clear enough described.
I have fixed that: https://github.com/sfX-android/android_vendor_extendrom/wiki/packages.txt
so in your case you should just add the path instead of PRESIGNED as described in the above wiki page. Please let me know if that fixes your issue!

pls see: https://github.com/sfX-android/android_vendor_extendrom/issues/23#issuecomment-1344453136

so in your case you should just add the path instead of PRESIGNED as described in the above wiki page. Please let me know if that fixes your issue!

I have no idea what the path is / should be. I changed the LOCAL_CERTIFICATE line manually in the makefile to LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE) and that fixed the problem. Should I put the text $(DEFAULT_SYSTEM_DEV_CERTIFICATE) in repo\packages.txt?

I have no idea what the path is / should be. I changed the LOCAL_CERTIFICATE line manually in the makefile to LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE) and that fixed the problem. Should I put the text $(DEFAULT_SYSTEM_DEV_CERTIFICATE) in repo\packages.txt?

usually they are in the folder user_keys/ of the root folder.
BUT: that is only relevant when you generating your own keys of course! If you don't then you would not specify a path here.
The allowed values are defined here: https://source.android.com/docs/core/ota/sign_builds#certificates-keys
So actually you can replace PRESIGNED with one of:

testkey, platform (attention as this gives system wide access), shared,  media,  networkstack
or the path where your own generated signing keys are stored

$(DEFAULT_SYSTEM_DEV_CERTIFICATE) might work but this could cause parsing issues when creating the Android.mk and actually is identical to testkey when you are not generating you own keys. I would suggest using testkey or one of the others depending on the permission level you need for that app (see the above link).
For example (when not using own generated keys) I would use platform for the Aurora Service (as also shown here) but just testkey for a browser app etc.
I have updated the wiki page with more (hopefully) useful information: https://github.com/sfX-android/android_vendor_extendrom/wiki/packages.txt#special-keywords

That's useful - thanks. I am using my own keys for these builds, so I can put the path in my working copy.
Ideally, the implementation of packages.txt and get_prebuilts.sh should do the right thing, whether people are signing their builds or not. Maybe the following logic would work

Allow <path to certs> to be blank.
IF <path to certs>  is blank, OR if it is set to testkey THEN

IF SIGN_BUILDS is true THEN write LOCAL_CERTIFICATE :=  user-keys/shared  to the makefile
ELSE write LOCAL_CERTIFICATE :=  testkey  to the makefile

ELSE ( <path to certs> is platform, shared, media or networkstack) write LOCAL_CERTIFICATE :=   <path to certs>  to the makefile

This would add a bit more processing in F_WRITE_MAKEFILE() but would make things a bit mire user-friendly (especially for people who are new to working with keys and certificates :) )

ok so I had to dig into this once again as it was some time ago when I did this first.
so

I set PRODUCT_DEFAULT_DEV_CERTIFICATE in my vendor_e project to the path of the own generated keys (ref)
If PRODUCT_DEFAULT_DEV_CERTIFICATE is defined DEFAULT_SYSTEM_DEV_CERTIFICATE will be set to its value (ref)
DEFAULT_SYSTEM_DEV_CERTIFICATE is readonly so cannot be changed by a boardconfig (ref) and so the reason why setting PRODUCT_DEFAULT_DEV_CERTIFICATE instead
for signing APKs (and OTA) the  DEFAULT_SYSTEM_DEV_CERTIFICATE (keep 2. above in mind) will be used (ref -> defaults to testkey if empty)
if LOCAL_CERTIFICATE is not set at all the DEFAULT_SYSTEM_DEV_CERTIFICATE (keep 2. above in mind) will be used (ref)
APEX signing uses PRODUCT_DEFAULT_DEV_CERTIFICATE(!) though (ref)

conclusion:

if we do not set PRODUCT_DEFAULT_DEV_CERTIFICATE (and so indirectly setting DEFAULT_SYSTEM_DEV_CERTIFICATE) then the default public testkey will be used
we cannot set DEFAULT_SYSTEM_DEV_CERTIFICATE  directly so we have to set  PRODUCT_DEFAULT_DEV_CERTIFICATE
one can skip writing LOCAL_CERTIFICATE in an Android makefile which then would fallback to DEFAULT_SYSTEM_DEV_CERTIFICATE which means actually PRODUCT_DEFAULT_DEV_CERTIFICATE
that means for packages.txt:

we can leave it empty (since this freshly created commit)
we can set a specific key by defining a path or the known keywords

tbh it looks like the best solution is to simply ensure PRODUCT_DEFAULT_DEV_CERTIFICATE is set and leaving that field empty in packages.txt. which means the only reason why setting it other then PRESIGNED would make sense only when a specific permission is needed (e.g. platform)
After reviewing all the above I do not think an extra logic is needed for checking if the user wants to sign or not. Especially as when nothing is specified the apk will still signed and at the end everything is handled by the definition of PRODUCT_DEFAULT_DEV_CERTIFICATE. if that is not set at all the apks still get signed just with the testkey.
does that makes sense?

does that makes sense?

It does - thanks.
By trial and error I discovered problems in LOS 20 / Android 13 with Aurora Services, Bromite, DAVx5, ICSx5, and Fennec. These apps were missing from my built ROMs until I changed the LOCAL_CERTIFICATE value to $(DEFAULT_SYSTEM_DEV_CERTIFICATE). I presume therefore that these apps were wrongly specified at PRESIGNED in packages.txt and needed to be signed somehow (which will happen if I don't specify `PRESIGNED) before they are loaded/installed at first boot.
That leaves  a couple of things I still don't know or understand:

How to determine whether a package I want to add to packages.txtis or is not signed? (Most of the packages I have added were done by copy and paste, changing only the fields that obviously needed changing.) Once I understand that, and if I can confirm that the Aurora Services, Bromite and Fennec  apks (which come from somewhere other than F-Droid) are not actually presigned, I'll make a PR with the necessary changes to packages.txt.

Why two packages which were downloaded from F-Droid (ICSx5 and DAVx5) were missing from the built ROMs.  Their F-Droid pages both state (like most F-Droid pages)

(the apk) is built and signed by F-Droid, and guaranteed to correspond ...

I will experiment in my next builds with leaving these two as PRESIGNED and see if the problem persists

I presume therefore that these apps were wrongly specified at PRESIGNED in packages.txt and needed to be signed somehow (which will happen if I don't specify PRESIGNED)
correct

before they are loaded/installed at first boot.
no the signing happens during the build

That leaves a couple of things I still don't know or understand:

How to determine whether a package I want to add to packages.txtis or is not signed?
easiest is (and that's how one can verify also if the own signature is there would be:

keytool -printcert -jarfile <APK>
when it prints Not a signed jar file its obviously not signed and otherwise you get the signature shown.
another option (and actually the recommended way) is using the apksigner tool which is e.g. also available as an Ubuntu package (apt install apksigner)

Why two packages which were downloaded from F-Droid (ICSx5 and DAVx5) were missing from the built ROMs.

If that happens something is wrong with the generated Android.mk. Check that and/or upload it here.

I will experiment in my next builds with leaving these two as PRESIGNED and see if the problem persists

actually ANY package from F-DROID MUST be set to PRESIGNED. as all packages from there are signed already and so should not be signed (again). This will cause issues if it even works during build..

First thing we need is more input:

the generated Android.mk in vendor/extendrom
the output of get_getprebuilts.sh
the content of the vendor/extendrom/out

the generated Android.mk in vendor/extendrom

Is here: https://ecloud.global/s/BZefa6rGgNknq8J

the output of get_getprebuilts.sh

is here
          ENABLE_EXTENDROM: true
          EXTENDROM_PACKAGES: AuroraStore AuroraServices BlissLauncher Bromite DAVx5 ICSx5 NextCloud  NextCloudNotes OpenTasks K9-Mail-latest Fennec QKSMS OpenCamera Lawnchair-latest noLOSSnap noLOSEmail noLOSMessaging noLOSJelly
          EOS_EDITION:
          [F_GET_GPG_KEYS] ... skipping already imported gpg pub key (7A029E54DD5DCE7A)
          [F_GET_GPG_KEYS] ... skipping already imported gpg pub key (22F796D6E62E6625A0BCEFEA7F979A66F3E08422)
          [get_packages] ... skipping F-Droid as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping F-DroidPrivilegedExtension_pb as not requested by EXTENDROM_PACKAGES
          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname com.aurora.store_LATEST.apk
          [get_packages] ... parsing result: com.aurora.store_LATEST.apk -> com.aurora.store_41.apk
          [download_package] ... downloading package: com.aurora.store_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//com.aurora.store_41.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/com.aurora.store_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/AuroraStore.apk

          [download_package] ... downloading package: AuroraServices_v1.1.1.apk
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/AuroraServices.apk

          [get_packages] ... skipping AdAway as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping DNS66 as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping Magisk as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping SignMagisk as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping Phonesky as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping MicrogGmsCore as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping DroidGuard as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping FakeStore as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping NominatimBackend as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping MozillaNlpBackend as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping GsfProxy as not requested by EXTENDROM_PACKAGES
          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname net.sourceforge.opencamera_LATEST.apk
          [get_packages] ... parsing result: net.sourceforge.opencamera_LATEST.apk -> net.sourceforge.opencamera_85.apk
          [download_package] ... downloading package: net.sourceforge.opencamera_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//net.sourceforge.opencamera_85.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/net.sourceforge.opencamera_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/OpenCamera.apk

          [get_packages] ... skipping opencamera_j5_latest as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping Omega as not requested by EXTENDROM_PACKAGES
          [get_packages] ... skipping Lawnchair-stable as not requested by EXTENDROM_PACKAGES
          [download_package] ... downloading package: Lawnchair_latest.apk
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/Lawnchair-latest.apk

          [get_packages] ... skipping OpenLauncher as not requested by EXTENDROM_PACKAGES
          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname foundation.e.blisslauncher_LATEST.apk
          [get_packages] ... parsing result: foundation.e.blisslauncher_LATEST.apk -> foundation.e.blisslauncher_13100.apk
          [download_package] ... downloading package: foundation.e.blisslauncher_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//foundation.e.blisslauncher_13100.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/foundation.e.blisslauncher_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/BlissLauncher.apk

          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname com.fsck.k9_LATEST.apk
          [get_packages] ... parsing result: com.fsck.k9_LATEST.apk -> com.fsck.k9_34000.apk
          [download_package] ... downloading package: com.fsck.k9_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//com.fsck.k9_34000.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/com.fsck.k9_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/K9-Mail-latest.apk

          [get_packages] ... skipping FairEmail as not requested by EXTENDROM_PACKAGES
          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname org.mozilla.fennec_fdroid_LATEST.apk
          [get_packages] ... parsing result: org.mozilla.fennec_fdroid_LATEST.apk -> org.mozilla.fennec_fdroid_1072020.apk
          [download_package] ... downloading package: org.mozilla.fennec_fdroid_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//org.mozilla.fennec_fdroid_1072020.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/org.mozilla.fennec_fdroid_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/Fennec.apk

          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname com.moez.QKSMS_LATEST.apk
          [get_packages] ... parsing result: com.moez.QKSMS_LATEST.apk -> com.moez.QKSMS_2218.apk
          [download_package] ... downloading package: com.moez.QKSMS_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//com.moez.QKSMS_2218.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/com.moez.QKSMS_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/QKSMS.apk

          [get_packages] ... skipping FFUpdater as not requested by EXTENDROM_PACKAGES
          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname at.bitfire.icsdroid_LATEST.apk
          [get_packages] ... parsing result: at.bitfire.icsdroid_LATEST.apk -> at.bitfire.icsdroid_64.apk
          [download_package] ... downloading package: at.bitfire.icsdroid_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//at.bitfire.icsdroid_64.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/at.bitfire.icsdroid_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/ICSx5.apk

          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname at.bitfire.davdroid_LATEST.apk
          [get_packages] ... parsing result: at.bitfire.davdroid_LATEST.apk -> at.bitfire.davdroid_402060000.apk
          [download_package] ... downloading package: at.bitfire.davdroid_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//at.bitfire.davdroid_402060000.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/at.bitfire.davdroid_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/DAVx5.apk

          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname com.nextcloud.client_LATEST.apk
          [get_packages] ... parsing result: com.nextcloud.client_LATEST.apk -> com.nextcloud.client_30230090.apk
          [download_package] ... downloading package: com.nextcloud.client_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//com.nextcloud.client_30230090.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/com.nextcloud.client_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/NextCloud.apk

          [download_package] ... downloading package: arm64_ChromePublic.apk
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/Bromite.apk

          [get_packages] ... skipping Etar as not requested by EXTENDROM_PACKAGES
          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname org.dmfs.tasks_LATEST.apk
          [get_packages] ... parsing result: org.dmfs.tasks_LATEST.apk -> org.dmfs.tasks_82200.apk
          [download_package] ... downloading package: org.dmfs.tasks_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//org.dmfs.tasks_82200.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/org.dmfs.tasks_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/OpenTasks.apk

          [get_packages] ... parsing repo to find latest apk file name
          PARSEAPK -repourl https://mirror.cyberbits.eu/fdroid/repo/ -apkname it.niedermann.owncloud.notes_LATEST.apk
          [get_packages] ... parsing result: it.niedermann.owncloud.notes_LATEST.apk -> it.niedermann.owncloud.notes_3007001.apk
          [download_package] ... downloading package: it.niedermann.owncloud.notes_LATEST.apk
          [download_package] ... downloading signature: https://mirror.cyberbits.eu/fdroid/repo//it.niedermann.owncloud.notes_3007001.apk.asc
          [verify_package] ... verifing package signature for /root/work/vendor/extendrom/prebuilt/it.niedermann.owncloud.notes_LATEST.apk: VALID
          [get_packages] ... target package: /root/work/vendor/extendrom/prebuilt/NextCloudNotes.apk

          [main] Writing makefiles (if needed)

          AuroraServices
          [F_WRITE_MAKEFILE] ... WRITING AuroraServices as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping Lawnchair-stable as not requested by EXTENDROM_PACKAGES
          Lawnchair-latest
          [F_WRITE_MAKEFILE] ... WRITING Lawnchair-latest as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping Magisk.zip as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping SignMagisk.zip as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping Omega as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping Phonesky as not requested by EXTENDROM_PACKAGES
          Bromite
          [F_WRITE_MAKEFILE] ... WRITING Bromite as requested by EXTENDROM_PACKAGES
          DAVx5
          [F_WRITE_MAKEFILE] ... WRITING DAVx5 as requested by EXTENDROM_PACKAGES
          ICSx5
          [F_WRITE_MAKEFILE] ... WRITING ICSx5 as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping FakeStore as not requested by EXTENDROM_PACKAGES
          AuroraStore
          [F_WRITE_MAKEFILE] ... WRITING AuroraStore as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping OpenLauncher as not requested by EXTENDROM_PACKAGES
          K9-Mail-latest
          [F_WRITE_MAKEFILE] ... WRITING K9-Mail-latest as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping MicrogGmsCore as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping GsfProxy as not requested by EXTENDROM_PACKAGES
          QKSMS
          [F_WRITE_MAKEFILE] ... WRITING QKSMS as requested by EXTENDROM_PACKAGES
          NextCloud
          [F_WRITE_MAKEFILE] ... WRITING NextCloud as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping FFUpdater as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping FairEmail as not requested by EXTENDROM_PACKAGES
          BlissLauncher
          [F_WRITE_MAKEFILE] ... WRITING BlissLauncher as requested by EXTENDROM_PACKAGES
          NextCloudNotes
          [F_WRITE_MAKEFILE] ... WRITING NextCloudNotes as requested by EXTENDROM_PACKAGES
          OpenCamera
          [F_WRITE_MAKEFILE] ... WRITING OpenCamera as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping opencamera_j5_latest as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping AdAway as not requested by EXTENDROM_PACKAGES
          OpenTasks
          [F_WRITE_MAKEFILE] ... WRITING OpenTasks as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping F-DroidPrivilegedExtension_pb as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping F-Droid as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping DNS66 as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping DroidGuard as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping MozillaNlpBackend as not requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping NominatimBackend as not requested by EXTENDROM_PACKAGES
          Fennec
          [F_WRITE_MAKEFILE] ... WRITING Fennec as requested by EXTENDROM_PACKAGES
          [F_WRITE_MAKEFILE] ... skipping Etar as not requested by EXTENDROM_PACKAGES

          ============================================
          /e/ build variables:
          ====================
          EOS_DEVICE=""
          DEBUG_LOG="/root/work/.e/logs/e-20221213-4microg-CUSTOM-PLUS-E-.log"
          _MAX_THREADS="31"
          MAX_THREADS_ARG="-j 31"
          USE_CCACHE="1"
          CCACHE_EXEC="/usr/bin/ccache"
          CCACHE_DIR="/root/work/ccache/l4m"
          CCACHE_SIZE="12G"
          CCACHE_COMPRESS=""
          CCACHE_NOCOMPRESS="true"
          CCACHE_COMPRESSLEVEL="6"
          BRANCH_NAME="v1-13"
          RELEASE_TYPE="4microg-CUSTOM-PLUS-E"
          REPO="https://github.com/LineageOS/android.git"
          MIRROR=""
          OTA_URL=""
          USER_NAME="Pete"
<EMAIL_ADDRESS>          INCLUDE_PROPRIETARY="false"
          BUILD_OVERLAY="false"
          LOCAL_MIRROR="false"
          CRONTAB_TIME="now"
          CLEAN_AFTER_BUILD="false"
          CLEAN_BEFORE_BUILD="false"
          WITH_SU="false"
          ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx8G"
          CUSTOM_PACKAGES=""
          SIGN_BUILDS="true"
<EMAIL_ADDRESS><EMAIL_ADDRESS>          ZIP_SUBDIR="true"
          LOGS_SUBDIR="true"
          SIGNATURE_SPOOFING="restricted"
          DELETE_OLD_ZIPS="0"
          DELETE_OLD_LOGS="0"
          EOS_BUILD_DATE="20221213"
          TMP_DIR="/root/work/.e/tmp"
          ZIP_DIR="/root/work/.e/zips/"
          SYNC_RESET="0"
          KEYS_DIR="/root/work/.e/keys"
          MINIMAL_APPS="false"
          ============================================

the content of the vendor/extendrom/out

is no longer available - sorry. I can't afford to keep the build server instance hanging around when I'm not using it. And snapshots take hours to create and more hours to load. Quicker  to fire up a new instance and rebuild

More information

All the .apks from extendrom/prebuilt/

here
or here

Change made to repo/packages.txt

here
diff --git a/repo/packages.txt b/repo/packages.txt
index 69b5169..94016d1 100644
--- a/repo/packages.txt
+++ b/repo/packages.txt
@@ -111,7 +111,7 @@ at.bitfire.davdroid_LATEST.apk|FDROIDREPO|app|DAVx5.apk;PRESIGNED|true
 com.nextcloud.client_LATEST.apk|FDROIDREPO|app|NextCloud.apk;PRESIGNED|true

 # Bromite Browser
-arm64_ChromePublic.apk|https://github.com/bromite/bromite/releases/download/102.0.5005.67|app|Bromite.apk;PRESIGNED|false||bromite_repos.xml
+arm64_ChromePublic.apk|https://github.com/bromite/bromite/releases/download/102.0.5005.67|app|Bromite.apk;PRESIGNED|false|

the git log of the extendrom I was working with

here
commit a37aac2033339d6a6ba85cb84acfbb69809b559a
Author: steadfasterX<EMAIL_ADDRESS>Date:   Mon Dec 12 11:19:29 2022 +0000

    fixes #14

    Signed-off-by: steadfasterX<EMAIL_ADDRESS>
commit ce187d36eeabc2ec3297d3917a0b0873798ab27d
Merge: 217cfd4 338accb
Author: steadfasterX<EMAIL_ADDRESS>Date:   Mon Dec 12 09:18:04 2022 +0100

    Merge remote-tracking branch 'origin/split_fdroid_repos'

commit 217cfd4237b0da191c2709a1179412951e08ce8b
Author: Pete Fotheringham<EMAIL_ADDRESS>Date:   Mon Dec 12 09:14:10 2022 +0100

    closes #27

    https://github.com/sfX-android/android_vendor_extendrom/pull/27

    changes:

    - added noLOSEmail
    - added noLOSMessaging
    - added noLOSSnap
    - added noLOSJelly
    - added extendrom_privapp-permissions-com.android.vending.xml
    - added extendrom_default-permissions-com.android.vending.xml
    - updated repo/packages.txt

    Signed-off-by: steadfasterX<EMAIL_ADDRESS>
commit 338accb328b441e590e547e35b3b2b1e3df54f43
Author: steadfasterX<EMAIL_ADDRESS>Date:   Sun Dec 11 14:03:12 2022 +0000

    mk: new additional repos approach

    this prepares the first bunch of repos: microg and bromite
    can be extended if needed

    Signed-off-by: steadfasterX<EMAIL_ADDRESS>
commit 960c85a30a7f03adfeac240571acacb23c4086b4
Author: steadfasterX<EMAIL_ADDRESS>Date:   Sun Dec 11 10:28:18 2022 +0100

    utils: protect $line

commit ced855ec73b29212ddac0d09d3eb4e7046741d67
Author: steadfasterX<EMAIL_ADDRESS>Date:   Sun Dec 11 10:27:07 2022 +0100

    allow empty LOCAL_CERTIFICATE

    which means: DEFAULT_SYSTEM_DEV_CERTIFICATE will be used

commit faa1d1364fcceab6e49380f3ccfa9cb210c6f80b
Author: steadfasterX<EMAIL_ADDRESS>Date:   Fri Dec 9 16:33:45 2022 +0100

    Update packages.txt

commit f33f70c115f9ccae205008e179515fe0f3ac17e5
Author: steadfasterX<EMAIL_ADDRESS>Date:   Fri Nov 18 14:00:42 2022 +0100

    packages: add j5 cam preview fix

commit 6d57c432ee8f846b556ce7faa27be54c6aa6eebf
Author: steadfasterX<EMAIL_ADDRESS>Date:   Tue Aug 16 10:50:23 2022 +0200

    Update README.md

commit 4f8ecd82522160639b195529e5ca75bd09927206
Author: steadfasterX<EMAIL_ADDRESS>Date:   Tue Aug 16 10:47:28 2022 +0200

    tools: curl 7.84.0, prebuilt static

    taken from https://github.com/moparisthebest/static-curl

    Signed-off-by: steadfasterX<EMAIL_ADDRESS>

I've done a bit more investigating.
I have two builds

1127 built with <cert-path> field in packages.txt changed from PRESIGNED to user-keys/platform for  AuroraServices, shared for the rest
1213 built, with <cert-path> field in packages.txt unchanged - PRESIGNED

In 1127 build

the apps are present in the file system - AuroraServices in /system/priv-app,  the others in /system/app.
they show up in   'Settings | Apps | See all apps' or in  Launcher / App drawer
they can be run
they show up in F-Droid (apart from AuroraServices, which does not have an F-Droid repo) but

if clean flashed, they cannot be updated  because the signatures don't match
if dirty flashed over an earlier 0.18 or 0.19 build, they can be updated, because the versions in those builds were PRESIGNED, so their signature do match

testing the apks with keytool -printcert -jarfile shows they are signed with my keys
apks pulled from the device, and keytool output are in this zip file

in 1213 build

the apps are  present in the file system - AuroraServices in /system/priv-app,  the others in /system/app.
they do not show up in  'Settings | Apps | See all apps' or in  Launcher / App drawer
they cannot be run
they do not show up in F-Droid
testing the apks with keytool -printcert -jarfile shows they are signed with the original keys they had when downloaded
apks pulled from the device, and keytool output are in this zip file

$ ls -l 1???
1127:
-rw-r--r--  1 pete  staff    3248183 18 Dec 13:24 AuroraServices.apk
-rw-r--r--  1 pete  staff  167789104 18 Dec 12:35 Bromite.apk
-rw-r--r--  1 pete  staff   16699760 18 Dec 12:34 DAVx5.apk
-rw-r--r--  1 pete  staff  169053682 18 Dec 12:36 Fennec.apk
-rw-r--r--  1 pete  staff   14395699 18 Dec 12:35 ICSx5.apk

1213:
total 724960
-rw-r--r--  1 pete  staff    3237024 18 Dec 13:08 AuroraServices.apk
-rw-r--r--  1 pete  staff  167728797 18 Dec 13:08 Bromite.apk
-rw-r--r--  1 pete  staff   16796284 18 Dec 13:03 DAVx5.apk
-rw-r--r--  1 pete  staff  169050095 18 Dec 13:04 Fennec.apk
-rw-r--r--  1 pete  staff   14346444 18 Dec 13:04 ICSx5.apk```

Final point: there does seem to be a problem with app signing in LOS 20. In the  commit message commit I linked above

Professor-Berni/android_vendor_AuroraServices@d533115

the maintainer of the unofficial LOS builds for suzuran says

My mistake: AuroraServices.apk is NOT presigned!

But I downloaded the .apk from his repo and it is in fact PRESIGNED. But he had to change from presigned: true to certificate: "platform" to allow his build to succeed

This looks like the cause of the PRESIGNED apk problem:
https://stackoverflow.com/questions/67692706/presigned-apk-loses-signature-in-aosp-build
It has a couple of workarounds too :)

So, the current state of things (after a lot of investigation, and trial and error)

I have a functioning workaround for Bromite and AuroraServices: add the following line to the module definition in the generated Android.mk.
LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/prebuilt/$(LOCAL_MODULE).apk
I cannot find workarounds for Fennec, ICSx5 and DAVx5. My future builds won't include those apps. If users dirty flash, then the installed and updated apps will continue to work. If they clean flash, and need those apps, they will have to install them manually.

can you make a PR for whatever changes is needed then? would be greatly appreciated.. :)

Please excuse the long reply...
It's not clear to me how much of this can actually be solved, or what the best way would be to solve it.
The LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/prebuilt/$(LOCAL_MODULE).apkfix to stop signature stripping is only definitely needed for Aurora Services and Bromite. We could fix it EITHER

by some new keyword (e.g. PRESIGNED-no-strip) in packages.txt, which is handled by F_WRITE_MAKEFILE() OR
by doing some processing in F_WRITE_MAKEFILE() to add the line only for the named modules.

I think 1 would be best, but I don't really have the shell knowledge to do it right.
For the non-working modules (ICSx5, DAVx5, Fennec), we could implement a workaround where we get the 'version before latest' and include that in the ROM, and let F-DROID download and install a working update which won't get it's signature script. That is a bt of a hack, and will take a lot of maintenance, particulary for Fennec, which gets updates quite regularly, so the version number of the 'version before latest' will probably have changed by the next time we make a build. And it doesn't work if people make a build including the broken modules but not F-Droid.
For my custom Lineage4MicroG builds, I plan to leave these modules out of the ROM completely. For users who have dirty flashed, the currently installed modules may work, having been updated by F-Droid (for DAVx5, and Fennec at least. ICSx5 hasn't had an update in F-Droid for a while.) If users clean flash the ROM, then they will have to install these apps from F-Droid.
Any of the above is really just a sticking-plaster over the real problem, which is that the changes to how pre-signed APKs are handled in  Android 13 are likely to break some extendrom packages. I guess I'm the only one using extendrom with Android 13, so it's possible that some of the packages I don't use in my ROMs are also broken.
So for now, I plan to carry on hand-crafting my ROM's by manually editing the generated Android.mk as required to get the modules I need working.

I am still not able to re-produce this (last tested on LOS - 20), integrating Aurora Service works with the current state of extendrom just fine.
I will close that issue but feel free to re-open a new issue if it does not work for you. Pls provide the generated Android.mk  in vendor/extendrom then as well as the output of source build/envsetup.sh

ok I am on it right now. The thing is when we sign during the build process by our own keys we cannot update that app later. which becomes crucial important when e.g. talking about browser apps etc.
I plan to add 2 things both from your discovered link :

check the target SDK and add LOCAL_SDK_VERSION if higher then 29. introduced here
in any case as soon as one specify PRESIGNED the pure untouched apk will be copied by using LOCAL_REPLACE_PREBUILT_APK_INSTALLED

that means as long as one define PRESIGNED it should be untouched always. that was my assumption anyways but it turned out that Android still tampers around with the apk even when its set. the above should make it possible to really use the signatures of the origin authors and not stripping anything (hopefully)


Utility script to detect feature overlap between new and existing CAPA rules.

Python script to detect feature overlap between new and existing CAPA rules. Checks if the a feature in new rule exists in both the new rule and an existing rule, ignoring other logic like scopes, structural expressions, etc. The changes made don't affect the repo in any way.
To run edit these variables in .py file as required new_rules_path / rules_path('Directory containing the rules') / base_dir.
closes #1451

Checklist

[ ] No CHANGELOG update needed

[x] No new tests needed

[x] No documentation update needed

I think the check fails are not related to me. Failing tests are Binary Ninja Tests.
Also the changes made do affect any other part of repo in any way.

I think the check fails are not related to me. Failing tests are Binary Ninja Tests.

Correct, you can ignore those. Thanks for the contribution, I'll review the code shortly.

@mr-tz
range(mnemonic(cmp), min=4, max=infinity)
For overlap do we want to consider this as a single feature or is mnemonic(cmp) a feature

range(mnemonic(cmp), min=4, max=infinity)
For overlap do we want to consider this as a single feature or is mnemonic(cmp) a feature

I think mnemonic(cmp) is good.

Awesome, this looks better and better. Thanks for your patience working through these.

Thank you again for your help in fixing the issues.

Besides fixing the minor issues, can you share (or better add) test cases for this? I'd love to hook this into our CI for new rules ASAP then.

I would love to learn more about how to design test cases. Is there any resource or documentation that you can recommend to help me get started with designing test cases? Additionally, if you could walk me through some examples, that would be very helpful. Thank you again for your help and patience.

I'd encourage you take a look at the pytest documentation and our test cases, e.g., https://github.com/mandiant/capa/blob/master/tests/test_scripts.py and also test_rules.py. Alternatively, you can create a test rule and expected output here and we can work together on creating a test. Something like:  and  result in this overlap.
For the CI checks that sounds like a great plan.
Just to be complete, I'm talking about two type of tests. The first tests are to check the code works as expected. The second checks in CI (better than test) verify if existing and new rule features overlap.

The first tests are to check the code works as expected.

@gmr-tz  I have made changes regarding the test to check code working. I have added 3 tests.

To check if the new rule file is a valid file i.e. File name ends with .yml / top level statements is a rule
It run the script on a rule file and checks if the total number of overlaps matches the expected overlaps in pytest.mark.paramterize

We now need to create a test rule to ensure that it is functioning.
In regards to test rule, I have a proposal. All of the unique features in every rule can be combined into a single new rule in an or statement. The number of overlaps should equal the total number of existing rules which are 1013 when the script is run on this new rule.

The first tests are to check the code works as expected.

@gmr-tz I have made changes regarding the test to check code working. I have added 3 tests.

To check if the new rule file is a valid file i.e. File name ends with .yml / top level statement is a rule
It run the script on a rule file and checks if the total number of overlaps matches the expected overlaps in pytest.mark.paramterize

We now need to create a test rule to ensure that it is functioning.
In regards to test rule, I have a proposal. All of the unique features in every rule can be combined into a single new rule in an or statement. The number of overlaps should equal the total number of existing rules which are 1013 when the script is run on this new rule.

The second checks in CI (better than test) verify if existing and new rule features overlap.

The second test which is CI test can be added here
https://github.com/mandiant/capa-rules/blob/46a1022722c83f7c93b2eaa70d3fc64fd7c9d0b8/.github/workflows/tests.yml#L84
We can add one more test inside for loop to run python ../scripts/lint.py rules "$tag" tag is the modified rule.

The second checks in CI (better than test) verify if existing and new rule features overlap.

The second test which is CI test can be added similarly to
https://github.com/mandiant/capa-rules/blob/46a1022722c83f7c93b2eaa70d3fc64fd7c9d0b8/.github/workflows/tests.yml#L84
We can add one more step here inside for loop to run detect_duplicate_features.py script on modified rules.
name: Run check features overlap on modified rules
run: |
  cd rules/
  for changed_file in ${{ steps.files.outputs.added_modified }} ${{ steps.files.outputs.renamed }}; do
    if [[ ! $changed_file =~ .git|.md ]]; then
      tag=$(grep '\sname:' $changed_file | sed 's/^.*: //')
      python ../scripts/detect_duplicate_features.py rules "$tag"
    fi

It should be something like this:
name: Run check features overlap on modified rules
run: |
  cd rules/
  for changed_file in ${{ steps.files.outputs.added_modified }} ${{ steps.files.outputs.renamed }}; do
    if [[ ! $changed_file =~ .git|.md ]]; then
      python ../scripts/detect_duplicate_features.py rules "$changed_file"
    fi

I can help add/debug this. We'll also have to specify that this should warn but not fail the step.

It should be something like this:
I can help add/debug this. We'll also have to specify that this should warn but not fail the step.

Thanks for the suggestion! I've updated the script with your recommended changes and added a line to mark the step as a warning. Here's the updated script:
name: Run check features overlap on modified rules
run: |
  cd rules/
  for changed_file in ${{ steps.files.outputs.added_modified }} ${{ steps.files.outputs.renamed }}; do
    if [[ ! $changed_file =~ (.git|.md) ]]; then
      python ../scripts/detect_duplicate_features.py rules "$changed_file"
    fi
  echo "Finished checking for duplicate features in modified rules."

continue-on-error: true

Please let me know if you have any further suggestions or if there's anything else I can help with.

Here's the updated script

Thanks, I can update the rules CI once we're ready here.

Hi @williballenthin  @mr-tz ,
I am writing to express my excitement about continuing to contribute to the capa repository. As a new Open Source Contributor, I have thoroughly enjoyed my previous contributions to the project and would love to dive deeper into it. The capa project has been a great learning experience for me, and I am eager to contribute further and help enhance its capabilities. I have made quite a few successful PRs in CAPA #1463 #1471 #1479 #1480  #1488 and in Flare-Floss #720.
I am enthusiastic about collaborating with the capa repository team. I am open to collaborating with you or any other repository collaborator to ensure that my contributions align with the project's goals and maintain the high standards set by the capa community.
Thank you for considering my request, and I genuinely look forward to your response.

name: Run check features overlap on modified rules
run: |
  cd rules/
  for changed_file in ${{ steps.files.outputs.added_modified }} ${{ steps.files.outputs.renamed }}; do
    if [[ ! $changed_file =~ (.git|.md) ]]; then
      python ../scripts/detect_duplicate_features.py rules "$changed_file"
    fi
  echo "Finished checking for duplicate features in modified rules."

continue-on-error: true

@mr-tz The rules CI will have to be updated.

Thanks again, @Aayush-Goel-04! Adding this to the rules CI in https://github.com/mandiant/capa-rules/pull/771.


AsyncMem Implementations Can Deadlock

The code generator requires that memory requests can be issued if the memory module was "full" but a response is being dequeued in the same rule.
However, the current implementations don't support this and thus deadlock (the internal queue for requests is FULL and thus we can't make a request and it blocks the rule that would dequeue that request to empty the queue).
Ideally, we would modify the library so that the req and resp methods would actually execute in this scenario; however we may need a workaround.
Possible workarounds are:

Implement a special method that is called whenever a stage would do a req and resp in the same rule.
Modify the code generator to automatically dequeue responses a stage looking for and store them in other registers. This would break apart argument fetch and execution into two BSV rules (have to be careful to make it possible for those to execute on the same cycle to keep IPC up).

NOTE: this problem only occurs with the AsyncMem interface so if we only use register files, we don't have this issue (there is no queueing of requests to the register files).

The more general problem here is that, while requests to the same location happen in order, requests to different locations may be out of order. The old implementation required that responses were pulled off in the same order as requests, which lead to deadlocks.
I have reimplemented the module so that responses can be acknowledged out-of-order (i.e. any ready+valid response can be read) via a circular buffer. We still have the problem that buffers must be big enough to store all potential in-flight requests, unless we control scheduling a bit more strictly (which might be a better solution)

Example Code that is problematic:
x <- mem[a];
---
y <- mem[x];

Basically, if we only have 1 memory port, then we can't guarantee mem[x] has priority over mem[a]
and thus queues can get filled up and we can deadlock.
One solution might be to require that such programs require multiple read ports.
Then we can avoid conflicts by assigning operations to different ports.
E.g.,
x <- mem.port1.read(a);
---
y <- mem.port2.read(x);

The main question becomes: what are the requirements for needing more ports? Should the original be acceptable in any way or do we require that every access maps uniquely to a port?
In the latter case, we'd need one port for every access in every path.

@eszlac Can you comment here what the current state of the Port Checker is?
I.e. what restrictions does PDL currently impose on port usage / availability?

This is now caught by the port checker when the following flag is enabled during compilation:

-p, --portwarn           Throw errors for port conflicts between stages


Document new PAT scopes required for each method

The new Airtable Personal Access Tokens have several scopes you can choose from.
https://airtable.com/developers/web/api/scopes
It would be nice to know which ones are required to use different features of pyairtable . e.g. https://pyairtable.readthedocs.io/en/latest/api.html#interface

I'm not sure there's a use case for encoding the required scopes into the library, since they can change over time and there's nothing practical the library can do with them. Airtable's API will reject requests if the access token does not have the appropriate scopes, and I don't think pyAirtable should try to do the same. I'm going to close this issue, but pull requests are welcome if there's a valid use case I'm missing.


Add initial MMCM feature and PIP support.

I believe this solves the remaining unknown bits found in https://github.com/SymbiFlow/symbiflow-arch-defs/issues/1536

Zynq fuzzer seems to be getting stuck on 034b-cmt-mmcm-pips, investigating now.

Failure on Zynq is because the following pips never get solved:
CMT_TOP_L_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKFBIN.CMT_L_LOWER_B_CLK_FREQ_BB2
CMT_TOP_L_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKFBIN.CMT_L_LOWER_B_CLK_FREQ_BB3
CMT_TOP_L_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN1.CMT_L_LOWER_B_CLK_FREQ_BB2
CMT_TOP_L_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN1.CMT_L_LOWER_B_CLK_FREQ_BB3
CMT_TOP_L_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN2.CMT_L_LOWER_B_CLK_FREQ_BB2
CMT_TOP_L_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN2.CMT_L_LOWER_B_CLK_FREQ_BB3
CMT_TOP_R_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKFBIN.CMT_R_LOWER_B_CLK_FREQ_BB2
CMT_TOP_R_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKFBIN.CMT_R_LOWER_B_CLK_FREQ_BB3
CMT_TOP_R_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN1.CMT_R_LOWER_B_CLK_FREQ_BB2
CMT_TOP_R_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN1.CMT_R_LOWER_B_CLK_FREQ_BB3
CMT_TOP_R_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN2.CMT_R_LOWER_B_CLK_FREQ_BB2
CMT_TOP_R_LOWER_B.CMT_LR_LOWER_B_MMCM_CLKIN2.CMT_R_LOWER_B_CLK_FREQ_BB3

I've replicated locally, and debugging now.

I've replicated locally, and debugging now.

Zynq is running to completion now, kicking off new build.  Testing with other parts now.


feat: Added 'A','M' and 'G' text in the user list dropdown

Earlier the user list didn't showed the user role, though you could've
accessed it through the down arrow beside the user name, added initials
for Admin, Guest and Member.
Fixes #15200

Testing Plan:
Ran ./tools/test-all and it passed locally.
GIFs or Screenshots:

If a symbol is being added, rather than replacing the activity icon, there should be no icon for members (and probably not for guests), as it makes identifying administrators more difficult.

Can you please clarify what are you suggesting? To remove activity icon and add the user role in place ? or to just show admin status?

Just that how normal members are displayed doesn't need to change from how they're currently displayed.

I think the visual design needs some work here, which is maybe more a topic for discussion in chat.zulip.org than code review.  What do other team chat products do to mark administrators?

One convention is to have a separate list for administrators (e.g. Discord). So the user list could have three headings: Admins, Members, Guests. That could be quite simple but effective.

I started a thread, https://chat.zulip.org/#narrow/stream/6-frontend/topic/Denoting.20admins.20and.20guests.20better.20in.20buddy.20list/near/898372

I appreciate the effort here to make the PR. If nothing else, it has helped the discussion by having a concrete example to evaluate.
Unfortunately, as you will see in the chat thread, I am mostly opposed to this idea .

So shall we close this?

I think it's fine to leave as is, someone will act on it if necessary

Unfortunately, as you will see in the chat thread, I am mostly opposed to this idea .

Could the points raised in the thread be copied over here?

I'm closing this as I'm not happy with the user experience with this in a way that thinks we may want to rethink the whole concept.


Save database to file

savetofile saves the docs in _all_docs to file. It can also gzip them
if specified

small nit: add the JSONStream module as a separate commit
apart from that:
big +1 great work! merge it!

Merged!


[$1000] mWeb/Safari - The modal remains open for a few seconds before closing after returning from a chat

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

Action Performed:

Log in to ND.
Go to any chat.
Click on "Actions."
Use the device's physical back button to navigate back

Expected Result:
The modal should close before exiting the chat.
Actual Result:
It remains open even after going back to the LHN.
Workaround:
Unknown
Platforms:

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

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[x] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: v1.3.55-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:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/115492554/3bec2d06-213c-4da2-90b8-a1382d6a3bb0
https://github.com/Expensify/App/assets/115492554/75640898-31b8-49ed-bace-481e1c81376a
Expensify/Expensify Issue URL:
Issue reported by: @aman-atg
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1691678959149429
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~018a166524d05bfa35
Upwork Job ID:<PHONE_NUMBER>412531712
Last Price Increase: 2023-08-22

Proposal
Please re-state the problem that we are trying to solve in this issue.
Menu modal remains open for a few seconds after navigating back from a chat report using the back button.
What is the root cause of that problem?
The modal menu visibility state value remains true at the point where navigation away from the report starts. The menu eventually gets unmounted only after the LHN is displayed.
What changes do you think we should make in order to solve the problem?
We can use the HTML5 popstate event to check if the browser is about to navigate away from the report. If this is the case, then we set the menu visibility flag to false before navigation completes.
useEffect(() => {
    const isMobileWeb = Browser.isMobileChrome() || Browser.isMobileSafari();
    const popAction = () => {
        setMenuVisibility(false);
    }
    if (isMobileWeb) {
        addEventListener('popstate', popAction);
    }
    return () => {
        if (isMobileWeb) {
            removeEventListener('popstate', popAction);
        }
    }
}, []);

What alternative solutions did you explore? (Optional)
None.

reproducible 👍
https://github.com/Expensify/App/assets/24947345/c0b3dff0-a7f0-4201-bbde-037d7c400211

@abdulrahuman5196 bump please!

Proposal
Please re-state the problem that we are trying to solve in this issue.
Menu modal remains open for a few seconds after navigating back from a chat report using the back button. Also I found that emojipicker stays opened forever after navigating back.
What is the root cause of that problem?
Modals should be hidden before navigating back.
What changes do you think we should make in order to solve the problem?
Except described bug I found that emojipicker stays opened forever after navigating back and user has to close it manually. Also in IOU report "Delete request" modal remains opened for a few seconds after navigating back from a chat report using the back button.
For composer related modals I propose to add navigation listener for beforeRemove event something like this:
useEffect(() => {
        const hideModalsBeforeGoBack = navigation.addListener('beforeRemove', (e) => {
            if (!isMenuVisible && !EmojiPickerAction.emojiPickerRef.current.isEmojiPickerVisible) {
                return;
            }
            e.preventDefault();
            if (EmojiPickerAction.emojiPickerRef.current.isEmojiPickerVisible) EmojiPickerAction.hideEmojiPicker();
            if (isMenuVisible) setMenuVisibility(false);
            window.history.forward();
        });
        return () => {
            hideModalsBeforeGoBack();
        };
    }, [isMenuVisible, navigation]);

I think we should prevent go to previous screen at once, 1st - close modal, 2nd click - go back. It works the same way in native apps so we should keep consistency. Also I used window.history.forward(); to prevent changing address url. I tested this code, works fine. I will think on optimization if my proposal will be selected.
For IOU report "Delete request" modal, I can apply the same logic for isPopupMenuVisible variable in ThreeDotsMenu component.
What alternative solutions did you explore? (Optional)
We can avoid preventing go to previous screen and don't keep consistency between web version and native apps.

Apologies for the delay. Will check and get back soon.

@abdulrahuman5196 bump on reviewing these proposals ^^

Sorry for the delay. Will check in my morning.

bumped you @abdulrahuman5196 in slack!

So the suggestion from @akinwale and @mkarkachov is to close the modal from composer. The root cause mentioned is that the modal is not hidden before navigation back.
I have to confirm on the fix, but before that if the analysis is true. I would expect a fix at Modal component itself instead of each component using modal doing the fixes.

Proposal
Updated
@abdulrahuman5196 I have updated my proposal based on your observations. Please let me know what you think whey you get a chance to have a look.

@abdulrahuman5196 ^ update to the proposal!

@aimane-chnaif do you have bandwidth to pick up this one? 🙏

Sure @aimane-chnaif

@NicMendonca The issue is not reproducible now. We can close this issue.


sea-orm-cli: allow skipping impl ActiveModelBehavior for generated entities

This PR adds an option that enables users to skip generating the
impl ActiveModelBehavior for ActiveModel {}

by passing the --gen-impl-active-model-behavior false flag to sea-orm-cli generate entity.
This is intended to allow for an easy and idiomatic-for-rust alternative to https://github.com/SeaQL/sea-orm/issues/1931 which I described in more detail in a related discussion post
I don't necessarily think this should close out #1931, but I do think that the complexity of the solution described in that issue merits some consideration given the available alternative.

The current state of this PR only adds the CLI flag that maintains the current default behavior and updates EntityWriter test cases to include the new option. If maintainers are open to this approach I'd be happy to add some new test cases to validate the false code path.

I think this is an excellent solution.

Something I didn't realize when I opened this PR is that it may be a little problematic since it's all-or-nothing whereas it may be desirable for the empty impl blocks to exist for some of the generated entities since some ActiveModel trait methods have ActiveModelBehavior as a trait bound: https://docs.rs/sea-orm/latest/sea_orm/entity/trait.ActiveModelTrait.html

The implementation looks good, and this feature is definitely useful!

Hi this great, much needed, can we merge this?

@waynr do you have anything to amend?

Any updates?

Oh I don't have any additional changes. Sorry, I lost track of this after I started a new job earlier this year.

I've rebased onto master branch and resolved the merge conflict so this should be ready to merge.

When will it be updated? I really need this.


Properties: Show the original location for files in the recycle bin

This issue should be resolved with #2703.


undefined method `html_link' for nil:NilClass

I'm getting the following error while trying to use xcode_summary, any help ?
[00:36:36]: ▸ [!] Invalid `Dangerfile` file: undefined method `html_link' for nil:NilClass
[00:36:36]: ▸ #  from Dangerfile:11
[00:36:36]: ▸ #  -------------------------------------------
[00:36:36]: ▸ #  # Xcode Summary
[00:36:36]: ▸ >  xcode_summary.report 'build/reports/errors.json'
[00:36:36]: ▸ #
[00:36:36]: ▸ #  -------------------------------------------

build/reports/errors.json :
server:mykit jenkins$ cat build/reports/errors.json
{
  "warnings": [

  ],
  "ld_warnings": [

  ],
  "compile_warnings": [
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    },
    {
      "file_name": "MyFile.swift",
      "file_path": "/Users/Shared/Jenkins/Home/workspace/mykit/MYKIT/MyFile.swift:183:7",
      "reason": "initialization of immutable value 'myVar' was never used; consider replacing with assignment to '_' or removing it",
      "line": "                let myVar = \"\"",
      "cursor": "                ~~~~^~~~~"
    }
  ],
  "errors": [

  ],
  "compile_errors": [

  ],
  "file_missing_errors": [

  ],
  "undefined_symbols_errors": [

  ],
  "duplicate_symbols_errors": [

  ],
  "tests_failures": {
  },
  "tests_summary_messages": [
    "\t Executed 89 tests, with 0 failures (0 unexpected) in 0.249 (0.509) seconds\n"
  ]

In my project , I can not find "build/reports/errors.json"?

@qyhongfan you have to create that file usually with xcpretty-json-formatter.

@diogot  I used :
xcodebuild -workspace ios/AGWorkFlow.xcworkspace -scheme AGWorkFlow  -configuration Debug -sdk iphonesimulator | XCPRETTY_JSON_FILE_OUTPUT=xcodebuildResult.json xcpretty -f xcpretty-json-formatter  && exit ${PIPESTATUS[0]}
xcodebuildResult.json:
{
"warnings": [
],
"ld_warnings": [
],
"compile_warnings": [
],
"errors": [
],
"compile_errors": [
{
"file_name": "CalendarDayCell.swift",
"file_path": "/Users/hurry.qin/Work/AGWorkflow/ios/Sources/RNModules/Calendar/CalendarDayCell.swift:39:11",
"reason": "property 'self.dateModel' not initialized at super.init call",
"line": "    super.init(frame: .zero)",
"cursor": "          ^"
}
],
"file_missing_errors": [
],
"undefined_symbols_errors": [
],
"duplicate_symbols_errors": [
],
"tests_failures": {
},
"tests_summary_messages": [
]
}
Danger Error:
Danger::DSLError:
[!] Invalid `Dangerfile` file: undefined method `project_url' for #Danger::Jenkins:0x007f87658c4878
from Dangerfile:86
-------------------------------------------
}

xcode_summary.report 'xcodebuildResult.json'

# end
-------------------------------------------
I do not know why?

@diogot I used :
xcodebuild -workspace ios/AGWorkFlow.xcworkspace -scheme AGWorkFlow -configuration Debug -sdk iphonesimulator | XCPRETTY_JSON_FILE_OUTPUT=xcodebuildResult.json xcpretty -f xcpretty-json-formatter && exit ${PIPESTATUS[0]}
xcodebuildResult.json:
{
"warnings": [
],
"ld_warnings": [
],
"compile_warnings": [
],
"errors": [
],
"compile_errors": [
{
"file_name": "CalendarDayCell.swift",
"file_path": "/Users/hurry.qin/Work/AGWorkflow/ios/Sources/RNModules/Calendar/CalendarDayCell.swift:39:11",
"reason": "property 'self.dateModel' not initialized at super.init call",
"line": " super.init(frame: .zero)",
"cursor": " ^"
}
],
"file_missing_errors": [
],
"undefined_symbols_errors": [
],
"duplicate_symbols_errors": [
],
"tests_failures": {
},
"tests_summary_messages": [
]
}
Danger Error:
Danger::DSLError: �[31m
[!] Invalid `Dangerfile` file: undefined method `project_url' for #Danger::Jenkins:0x007f87658c4878�[0m
from Dangerfile:86
-------------------------------------------
}

xcode_summary.report 'xcodebuildResult.json'

# end
-------------------------------------------
I do not know why?

Invalid Dangerfile file: undefined method `project_url' for #Danger

@qyhongfan you have to create that file usually with xcpretty-json-formatter.

Thank you!  I have sovled this problem.

I am trying to debug locally and I was getting this error. I pointed to this branch and the problem still occurred, not sure if this helps or not, but:
```[!] Invalid Dangerfile file: undefined method `html_link' for nil:NilClass
from Dangerfile:18
-------------------------------------------
}

xcode_summary.report './output/report-formatted.json'

-------------------------------------------
/Users/bking/.bundle/ruby/2.3.0/danger-xcode_summary-661bd0318e4d/lib/xcode_summary/plugin.rb:219:in format_path'   /Users/bking/.bundle/ruby/2.3.0/danger-xcode_summary-661bd0318e4d/lib/xcode_summary/plugin.rb:249:in format_compile_warning'
/Users/bking/.bundle/ruby/2.3.0/danger-xcode_summary-661bd0318e4d/lib/xcode_summary/plugin.rb:169:in block in warnings'   /Users/bking/.bundle/ruby/2.3.0/danger-xcode_summary-661bd0318e4d/lib/xcode_summary/plugin.rb:168:in map'
/Users/bking/.bundle/ruby/2.3.0/danger-xcode_summary-661bd0318e4d/lib/xcode_summary/plugin.rb:168:in warnings'   /Users/bking/.bundle/ruby/2.3.0/danger-xcode_summary-661bd0318e4d/lib/xcode_summary/plugin.rb:134:in format_summary'
/Users/bking/.bundle/ruby/2.3.0/danger-xcode_summary-661bd0318e4d/lib/xcode_summary/plugin.rb:108:in report'   Dangerfile:18:in eval_file'
/Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/lib/danger/danger_core/dangerfile.rb:297:in eval'   /Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/lib/danger/danger_core/dangerfile.rb:297:in eval_file'
/Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/lib/danger/danger_core/dangerfile.rb:200:in block in parse'   /Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/lib/danger/danger_core/dangerfile.rb:197:in instance_eval'
/Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/lib/danger/danger_core/dangerfile.rb:197:in parse'   /Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/lib/danger/danger_core/dangerfile.rb:273:in run'
/Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/lib/danger/commands/dry_run.rb:44:in run'   /Library/Ruby/Gems/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:334:in run'
/Library/Ruby/Gems/2.3.0/gems/danger-6.0.9/bin/danger:5:in <top (required)>'   /usr/local/bin/danger:22:in load'
/usr/local/bin/danger:22:in `<top (required)>'```

Hi @KingOfBrian,
Thanks for reporting, it seems not related to this issue, you can open a new one if you like to discuss it.

Hey @diogot -- I logged a bug for something else that's a bit more problematic to me, and I wouldn't be surprised if they have the same root cause. Thanks!

These changes were included on #47


Image Handling Notebook link is broken

Image Handling Notebook link is broken.

Hey @thedatalass :)
I just tried the link on the README to the image handling notebook and it seems to be working.
Can you let me know the steps to reproduce the issue so I can address it?
Many thanks!

It is working now for me. Thanks!


PWA

@Wholloran can you provide detailed information about this enhancement? Cause we have all what is needed to be a PWA (manifest, service worker).

Closing


Change IPD at runtime

#Hi,
don't know if exists but there is any way to access the interpupillary distance of the lenses in runtime to change it (for example via an ui) so the user can calibrate it?
I see some info on that on the web-vr-polyfill.js - Viewers but is that accessible and changable in runtime?
EDIT: The reason I ask for this is that I have a scene where there seems to be flat .. no prespective. So to correct that I assumed to be related to IPD. But further looking led me to think that this might be related to both VREffect and VRControls scale, along with field-of-view value.
I'm using some scaled models.
Are there any guidelines how to set the correct scaling to the world and adapt the effect/controller scale and fov to have the correct depth?
And doesn't the VREffect hide some parts of the image that might be relevant ? (I say this because some oficial google cardboard demos don't have the black borders effect).
Thanks

The WebVR API provides this:
https://mozvr.com/webvr-spec/#vreyeparameters-attributes
If the HMD allows changing IPD, the WebVR API might be on the hook for
exposing it through the above means.
On Sun, May 29, 2016 at 12:10 PM Rui<EMAIL_ADDRESS>wrote:

Hi, don't know if exists but there is any way to access the interpupillary
distance of the lenses in runtime to change it (for example via an ui) so
the user can calibrate it?
Thank you in advance!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/borismus/webvr-boilerplate/issues/142, or mute the
thread
https://github.com/notifications/unsubscribe/AAQ8gM_xsHT9GUYITZyEdXcXh_NegWbCks5qGeSjgaJpZM4IpWu-
.

Thank you @borismus .
And about the other part of my question:
The reason I ask for this is that I have a scene where there seems to be flat .. no prespective. So to correct that I assumed to be related to IPD. But further looking led me to think that this might be related to both VREffect and VRControls scale, along with field-of-view value.
Are there any guidelines how to set the correct scaling to the world and adapt the effect/controller scale and fov to have the correct depth?
So - what scales to use on the world and how do they relate to the effect/control scale? So if I need to scale objects, how should I scale the effect/controls?
And doesn't the VREffect hide some parts of the image that might be relevant ? (I say this because some oficial google cardboard demos don't have the black borders effect).
If you want I can open separate issues for that..

You should use meters as your world unit. So an object that is 1x1x1 is a
cube of volume 1m^3.
On Mon, May 30, 2016 at 1:39 PM Rui<EMAIL_ADDRESS>wrote:

Thank you @borismus https://github.com/borismus .
And about the other part of my question:
The reason I ask for this is that I have a scene where there seems to be
flat .. no prespective. So to correct that I assumed to be related to IPD.
But further looking led me to think that this might be related to both
VREffect and VRControls scale, along with field-of-view value.
Are there any guidelines how to set the correct scaling to the world and
adapt the effect/controller scale and fov to have the correct depth?
So - what scales to use on the world and how do they relate to the
effect/control scale? So if I need to scale objects, how should I scale the
effect/controls?
And doesn't the VREffect hide some parts of the image that might be
relevant ? (I say this because some oficial google cardboard demos don't
have the black borders effect).
If you want I can open separate issues for that..
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/borismus/webvr-boilerplate/issues/142#issuecomment-222551956,
or mute the thread
https://github.com/notifications/unsubscribe/AAQ8gIob5iN2xqNKyj5X_giR9V_HuoWGks5qG0rwgaJpZM4IpWu-
.

And if I scale my scene? How that correlates to the controls/effect scale?

The effect offset is fixed and in meters, so you can't really scale your
scene.
On Mon, May 30, 2016 at 2:45 PM Rui<EMAIL_ADDRESS>wrote:

And if I scale my scene? How that correlates to the controls/effect scale?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/borismus/webvr-boilerplate/issues/142#issuecomment-222558064,
or mute the thread
https://github.com/notifications/unsubscribe/AAQ8gGEJCBzSHt4Sp26Ko3FlouIj9EGOks5qG1pzgaJpZM4IpWu-
.

Ok..so I have one more doubt related to this...
In this example on how to handle object scale in WebVR  by @toji there is a change in scale of the effect when changing the scale of the control..
vrEffect.scale = vrControls.scale; .
that from what I understand is related to camera location and the kind of scale sense we want to have in each different location.
Looking at that makes me confused as it seems it might have some influence.. what do you think?
Thanks

That scale example is woefully incomplete and possibly misleading.I should probably take it down or make it private so as not to confuse anyone.
The basics of forcing scale is this: The API (and hence the polyfill) will ALWAYS return values in meters. This applies to IPD and position. By default if you want something to appear to be 1 meter tall you make it 1 unit tall in your rendering. If you want something to look twice as big you have two options: Scale the object up by 200% or scale the VR position and IPD by 50%. Either way works, and the one that you use is dependent on the effect you want to achieve.

Ok, that is more clear, thank you @toji.
So by scaling the VR position and IPD you mean: scale the position and the
VRControls? Because that (VRControls scaling) seems to have some effect on
depth perception and IPD, at least from the tests I've made..
2016-05-31 4:05 GMT+01:00 Brandon Jones<EMAIL_ADDRESS>
That scale example is woefully incomplete and possibly misleading.I should
probably take it down or make it private so as not to confuse anyone.
The basics of forcing scale is this: The API (and hence the polyfill) will
ALWAYS return values in meters. This applies to IPD and position. By
default if you want something to appear to be 1 meter tall you make it 1
unit tall in your rendering. If you want something to look twice as big you
have two options: Scale the object up by 200% or scale the VR position and
IPD by 50%. Either way works, and the one that you use is dependent on the
effect you want to achieve.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/borismus/webvr-boilerplate/issues/142#issuecomment-222582788,
or mute the thread
https://github.com/notifications/unsubscribe/AADSA-Ht1Q6NnhEQUZTcTDb0HgOlTZjfks5qG6V9gaJpZM4IpWu-
.


Add ability to customize/extend the LivePostBlock class

The goal of this PR is to add the ability for users to customize/extend the LivePostBlock class.

Codecov Report

Merging #138 (062bb99) into main (dd769be) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main      #138   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           40        40
  Lines         1091      1108   +17
  Branches       103       152   +49
=========================================
+ Hits          1091      1108   +17

Impacted Files
Coverage Δ

src/wagtail_live/blocks.py
100.00% <100.00%> (ø)

src/wagtail_live/models.py
100.00% <100.00%> (ø)

src/wagtail_live/receivers/base.py
100.00% <100.00%> (ø)

src/wagtail_live/utils.py
100.00% <100.00%> (ø)

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 dd769be...062bb99. Read the comment docs.


Reword second sentence in README

I think the second sentence in the README was a fragment. I tried to reword it to make it more clear.

🤔 I can't request a review so just going to CC @mixmix.

Thanks for this @mplorentz


[Bug] [Master] Construct processInstance may NPE when master handling command

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
Construct processInstance may NPE when master handling command
What you expected to happen
commond content changed
How to reproduce
commond content changed
Anything else
No response
Version
dev
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

How to reproduce
commond content changed

Hi @tracehh can you show the detail how to reproduce? I can't get your point by commond content changed.

Map<String, String> processCmdParam = JSONUtils.toMap(processInstance.getCommandParam());
processInstance.getCommandParam() may be change accroding to update table directory.
processCmdParam may be null. @caishunfeng

processInstance.getCommandParam() may be change accroding to update table directory. processCmdParam may be null.

You mean update the data in tabke t_ds_process_instance manually?

may be


Referencing CVRParamLib in Mod/Plugin Runtime throws Dependency Exception

Simply put, when you reference CVRParamLib.dll, the Mod/Plugin is unable to find it. The only solutions are:

Require CVRParamLib.dll to be a UserLib

Requires a MelonLoader Plugin and extra work for BepInEx or a tonnn of reflection and assembly resolvers

Make the developers reference the MelonLoader or BepInEx dll

I don't want to do this

Will try and work with assembly resolving and see if it can be done without a Plugin.

Update: You can actually COMBINE a MelonLoader mod and a BepInEx plugin in one assembly and it will work perfectly fine. This may just be the very solution...

Fixed in v1.2.0


MPL2 newline parser is broken

| are newlines in MPL2, we should use return "\n".join(out) in prepare_text.

Closing this issue as I believe it's been fixed, the tests are passing: https://github.com/tkarabela/pysubs2/blob/master/tests/test_mpl2.py
If not, feel free to suggest input that is currently mishandled.


Update index.html

Impoved:

FAQs section to make it more readable and visually appealing 2) Why choose us section.
Fixes #101

@elinabhasin This is not valid.

Try these on your local setup first before creating any PR


Bug: https://nextjs-ollama-xi.vercel.app/ is not responding.

Description
When I try to ask a question on the web hosted version, an error occurs and I don't get a response.
Screenshot

I have Ollama installed and running on my local machine and I have pulled the Gemma:2b model.

I have a similar issue. The website seems to error out in the same way for me.
I installed nextjs-ollama-llm-ui and ollama through nix.
ollama is running (on the default adress):
$ http://localhost:11434
Ollama is running⏎

I then ran
$ nextjs-ollama-llm-ui
  ▲ Next.js 14.2.3
  - Local:        http://jirka-nixos:3000
  - Network:      http://<IP_ADDRESS>:3000

 ✓ Starting...
 ✓ Ready in 33ms
 ⨯ Failed to write image to cache B0Z3FnWKAAGjZHJa171iie+KPfLVSPJajqE+M39emDk= [Error: ENOENT: no such file or directory, mkdir '/nix/store/cjaly7lliqp1i0bb1mjd6m0rsah96w9b-nextjs-ollama-llm-ui-1.0.1/share/homepage/.next/cache'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'mkdir',
  path: '/nix/store/cjaly7lliqp1i0bb1mjd6m0rsah96w9b-nextjs-ollama-llm-ui-1.0.1/share/homepage/.next/cache'
}

Upon loading the page, (the terminal) errors with some cache error, but I don't know if that is relevant.
I have tried to load the page (http://<IP_ADDRESS>:3000/) in both librewolf and chromium. Inspecting the console, both seem to error out regarding CORS policy. Perhaps Cross Origin Isolation is set incorrectly on the http server, causing the errors?
# Librewolf
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://<IP_ADDRESS>:11434/api/tags. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 403.

Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.

# Chromium
Access to fetch at 'http://<IP_ADDRESS>:11434/api/tags' from origin 'http://<IP_ADDRESS>:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.  If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
<IP_ADDRESS>:11434/api/chat:1

       Failed to load resource: net::ERR_FAILED

P. S.:
I have also tried the oterm ollama client, it is working, so ollama should be set up correctly on my machine.

Hey, @Shapur1234.
The CORS error is probably due to your frontend being on http://<IP_ADDRESS>:3000 and not http://<IP_ADDRESS>:3000.
As stated in the Ollama documentation: Ollama allows cross-origin requests from <IP_ADDRESS> and <IP_ADDRESS> by default. Additional origins can be configured with OLLAMA_ORIGINS.
Can you try setting this: OLLAMA_ORIGINS=http://<IP_ADDRESS>:3000/ or OLLAMA_ORIGINS=*
Link to docs

Setting OLLAMA_ORIGINS=* fixed it.
Thanks!

Maybe it would be worthwhile to mention an explanation on setting up OLLAMA_ORIGINS=* for "local" use in the readme.
Since OLLAMA_ORIGINS is (in the readme) only mentioned under Vercel or Netlify, I thought it was specific to those and didn't apply for my situation.


Hello. I have a few questions about the pretrained LUke model you uploaded.

I downloaded the pre-trained model and loaded the model's state_dict with pytorch.
After checking, it was confirmed that there were no parameters for w2e_query, e2w_query, and e2e_query of each layer.
So, is this model the Original Attention model, not the Entity-aware Attention model?
If the Original Attention model is correct, can you also upload the Entity-aware Attention model? I would appreciate your reply.

Hi, thank you for opening the issue. As mentioned in Section 3.4 in our paper, we conducted pretraining using the vanilla self-attention mechanism and introduced the entity-aware mechanism only at the fine-tuning stage. The entity-aware query matrices (i.e., w2e, e2w, and e2e) are initialized using the query matrix of the vanilla self-attention mechanism.

thank you for the detailed answer. The luke structure you proposed is simple and powerful, so I think it will help a lot in my research.

Thanks!


Refactorings and fix rebased on current develop

I'm 95% happy about this, but please remove the todos and comments. I think it's better to create an issue or a Jira ticket. Code looks much cleaner without // todo: remove?? :)

Sure, they are just temporary notes on a WIP branch - none of them is going to get to develop.

Reading the review, please correct me if this understanding is OK:

there's a Devices collection, storing the input and output devices, protected by the mutex
when there's a device added/removed event, the collection is modified, and a proper event is sent on the game thread to notify of the new conditions
the game can get the device names (in input and output direction) and get a copy of device names
the game can use the obtained device names' collection to select a new device; the game should pass the index of that device back to the device manager
if the index passed by the game is out of range, exception is thrown.

The accessing the device lists between game and the device manager is thread-safe, but there's no thread-safe device identifier of the device known by the game; the game can not lock the device list for atomic read-names+device-selection operation.
When the device removal would happen, any of the following problems may happen:

the game selected the last device; in the mean time, last device was removed - index is out of range, the game gets the exception. Upon handling the exception the game can read the device lists again, and perform selection again, possibly fixing the issue.
the game selects any device which is not last; in the mean time, the first device is removed. Index is not out of range, but all indices have shifted and wrong device will be selected. The game will not be notified of any problems. It could still respond to all device removal notifications by re-selecting the device again and again, and will eventually stabilize on the proper device, but wrong devices will be in brief usage.

I think you could really think of storing the device list in some map, keyed by unique IDs (don't have to be system IDs or DVC IDS - these could be simple ever-increasing counter values, why not), and the game when reading the device list should get structures containing device names and unique IDs. Device selection based on the unique IDs and not indices would resolve the problem (plus, puzzling code in GetDeviceAt would be simplified I guess)

Thank you, Olek, for your analysis - I would say it is more than review and I appreciate that.
I have added updating current in&output device indices which was missing, but the problem of races in propagating changes between sdk and the game remains and (I think) the proposed map will not resolve it too. On the other hand the period for them is less than hundredth of second so the probability of problems seems very small.

Readme says "Download Dolby.io Communications C++ SDK release 2.1.0." Please fix the version.

Let's fix the indices-on-start issue I mentioned privately, apply these two remarks and clean up the commits and we're good to merge.


navigation to 2.4.0-alpha01 not save fragment states !

why in updates navigation to 2.4.0-alpha01 for advance navigation sample main fragment state are disabled?
in previous version its worked

i find the answer
https://www.youtube.com/watch?v=Covu3fPA1nQ


Dataflow for aggregated data processor

Completed the nifi development on September 13th, need to do unit testing for NISHTHA datasource

Completed the nifi development on September 13th, need to do unit testing for NISHTHA datasource

Completed


create new APIs

generate_default_settings() which is from write_default_setting_file_if_not_exist() with slight optimization by replacing std::endl with '\n'. move its definition from flash_dta.cpp to utils.cpp;
void perform_network_assignment() which is a wrapper of the old main() function. move its definition to utils.cpp;
void perform_cbi(), separate its definition from network_assignment();
void perform_cbsa(), separate its definition from network_assignment();
void generate_demand(), which is a wrapper of g_demand_file_generation(). its definition is moved to main_api.cpp as it needs assignment as argument;
void generate_zones(), which is a wrapper of g_TAZ_2_GMNS_zone_generation() and g_grid_zone_generation(). its definition is moved to main_api.cpp as it needs assignment as argument;
temporarily fix casting on arguments passed to max and min functions to make it work cross platforms;
minor code cleanup and optimization where they apply.

close it as it is no longer valid


nano 4.6 fails to build on macOS

Describe the bug
nano fails to build:
clang -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/nix/store/x9a0w6f62vj6xx4ip6mhnpzbyixcdxhn-nano-4.6/share/locale\" -DSYSCONFDIR=\"/etc\" -I../lib -I../lib   -g -O2 -Wall -c -o nano.o nano.c
text.c:2529:33: error: no member named 'st_mtim' in 'struct stat'
        timestamp_sec = (long)fileinfo.st_mtim.tv_sec;
                              ~~~~~~~~ ^
text.c:2530:34: error: no member named 'st_mtim' in 'struct stat'
        timestamp_nsec = (long)fileinfo.st_mtim.tv_nsec;
                               ~~~~~~~~ ^
text.c:2570:21: error: no member named 'st_mtim' in 'struct stat'
        if ((long)fileinfo.st_mtim.tv_sec == timestamp_sec &&
                  ~~~~~~~~ ^
text.c:2571:20: error: no member named 'st_mtim' in 'struct stat'
                                (long)fileinfo.st_mtim.tv_nsec == timestamp_nsec) {
                                      ~~~~~~~~ ^
4 errors generated.
make[2]: *** [Makefile:1618: text.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/private/tmp/nix-build-nano-4.6.drv-0/nano-4.6/src'
make[1]: *** [Makefile:1577: all-recursive] Error 1
make[1]: Leaving directory '/private/tmp/nix-build-nano-4.6.drv-0/nano-4.6'
make: *** [Makefile:1516: all] Error 2
builder for '/nix/store/x9vh1424xcx71bpiz4b86klij1yg3qi7-nano-4.6.drv' failed with exit code 2

To Reproduce
Steps to reproduce the behavior:

Use macOS
Update to master
nix-env -i nano

Expected behavior
Build nano.
Metadata
Please run nix run nixpkgs.nix-info -c nix-info -m and paste the result.

system: "x86_64-darwin"
host os: Darwin 19.0.0, macOS 10.15.1
multi-user?: no
sandbox: no
version: nix-env (Nix) 2.3.1
channels(crestani): "nixpkgs-19.03pre153206.f753852e11d"
nixpkgs: /Users/crestani/nixpkgs

It looks like this commit fixes it:
https://git.savannah.gnu.org/cgit/nano.git/commit/?id=f516cddce749c3bf938271ef3182b9169ac8cbcc


1 Warning and 1 Error fixes for Java version

fixes:

bootstrap class path not set in conjunction with -source 1.5 warning for JDK7 on Mac.
m4 comment EOF error (ERROR: end of file in comment)

Ekrem Aksoy writes:

fixes:

bootstrap class path not set in conjunction with -source 1.5 warning
for JDK7 on Mac.
some users don't have 1.7, so we won't change this at this moment
m4 comment EOF error (ERROR: end of file in comment)

what's this? I don't quite understand

You can view, comment on, or merge this pull request online at:
https://github.com/cjlin1/libsvm/pull/25
Commit Summary

suppress bootstrap class path not set in conjunction with -source 1.5
warning and fix m4 comment EOF error

File Changes

M java/Makefile (2)
M java/libsvm/svm.m4 (2)

Patch Links:

https://github.com/cjlin1/libsvm/pull/25.patch
https://github.com/cjlin1/libsvm/pull/25.diff

—
Reply to this email directly or view it on GitHub.*

When I've cloned repo, I've tried to compile java version (make clean && make), however it complained
m4 libsvm/svm.m4 > libsvm/svm.java
m4:libsvm/svm.m4:9: ERROR: end of file in comment
make: *** [libsvm/svm.java] Error 1
It is M4 error such as if you omit closing comment option, it puts EOF character. I've just fixed that.
(GNU M4 1.4.6 version on Macosx 10.7.5)

-changecom(//', ) +changecom(//', ` ')
shouldn't ' be'? (i.e., no space)

Yep, it work in both ways, but I just want to highlight it.
-EA
On Sat, Apr 4, 2015 at 8:58 AM, cjlin1<EMAIL_ADDRESS>wrote:

-changecom(//', ) +changecom(//', ` ')
shouldn't ' be'? (i.e., no space)
—
Reply to this email directly or view it on GitHub
https://github.com/cjlin1/libsvm/pull/25#issuecomment-89510013.

Thanks. But with a space it means things between // and a space. I think we want // and the end of a line. In this regard, we shouldn't have a space, right?
Ekrem Aksoy writes:

Yep, it work in both ways, but I just want to highlight it.
-EA
On Sat, Apr 4, 2015 at 8:58 AM, cjlin1<EMAIL_ADDRESS>wrote:

-changecom(//', ) +changecom(//', ` ')
shouldn't ' be'? (i.e., no space)
—
Reply to this email directly or view it on GitHub
https://github.com/cjlin1/libsvm/pull/25#issuecomment-89510013.

—
Reply to this email directly or view it on GitHub.*

We have  now used
changecom(//',')
This will appear in the next release. Thanks
Ekrem Aksoy writes:

When I've cloned repo, I've tried to compile java version (make clean && make),
however it complained
m4 libsvm/svm.m4 > libsvm/svm.java
m4:libsvm/svm.m4:9: ERROR: end of file in comment
make: *** [libsvm/svm.java] Error 1
It is M4 error such as if you omit closing comment option, it puts EOF character.
I've just fixed that.
(GNU M4 1.4.6 version on Macosx 10.7.5)
—
Reply to this email directly or view it on GitHub.*


Error code is ERROR?

No matter which Settings I chose I always get this:

Also doesn't matter what code the Script has:
^!n:: ; Ctrl+Alt+N hotkey
Run Notepad ; Open Notepad
return

As simple as that, trying to compile it I get the same Error message.
In the bottom left its stuck here:

Maybe that helps you further.

Sorry you are having this problem.
Could you give me the versions of AutoHotkey v2 and v1 being used, and also the version of Ahk2Exe?
Incidentally it looks like you are compiling a v1 script with a v2 base file, which won’t work, of course.
Thanks

Do we have an error code for an incompatible base file used?

@joedf
If an incompatible base file is used the compile would fail with an appropriate error message. In the @Baseult  example the error on my system is Hotkey or hotstring is missing its opening brace.

@Baseult
In addition to the versions I asked for in a previous message, could you also provide more details of how you are calling Ahk2Exe?
Thanks

Compiling the same script using the same Ahk2Exe runs successfully on Any.run, but when I try to do exactly the same on my computer, it fails.
So it seems like the issue is not with the script itself, and it is not related to compiling a v1 script with a v2 base file or any similar problem.
To make sure, I literally uninstalled everything AHK related.
I used the release from the following GitHub link:
https://github.com/AutoHotkey/Ahk2Exe/releases/tag/Ahk2Exe<IP_ADDRESS>b
Then, I created an .ahk file with the following content:
^!n:: ; Ctrl+Alt+N hotkey
Run Notepad ; Open Notepad
return

Since Ahk2Exe is capable of compiling without the need for an AHK installation, I did not install AHK at all.
(I also tried the process with AHK installed, but it did not affect the outcome.)
Next, I attempted to compile the script using the default settings, with "v<IP_ADDRESS>b U32 Ahk2Exe.exe" as the base file.
I didn't apply any compression.
Upon clicking "Convert," I encounter the error.
Interestingly, when I do the same steps on the Any.run virtual machine, the compilation was successful.
I came across a Reddit thread where someone faced a similar problem, but no solution has been posted yet (1 year ago).
https://www.reddit.com/r/AutoHotkey/comments/uui12n/ahk2exe_error/

There appears to be something wrong with your comspecvariable. At a DOS prompt can you type in set coms and check the result, please. It should say something like comspec=c:\windows\system32\cmd.exe.
Ahk2Exe uses this built in variable to run cmd.exe with parameters at this stage of the compile, and it appears that this program is unable to be found on your system.
Let me know how you get on diagnosing this area of the problem.
Cheers

Oh weird you are right, somehow I didn't have any environment variable set for commandprompt.
I quickly set it up using setx COMSPEC "C:\Windows\System32\cmd.exe" /M and now it compiles sucessfully.
Thanks for your help.

I’ll enhance the error message in a future release of Ahk2Exe.
BTW ensure that the path is shown in the comspec variable without any double-quotes.
Cheers


Official dsu apis

Is this app made using the official dsu apis descrived in source.android.com?

This app has some operation modes:

ADB: default operation mode when other modes aren't available, which basically prepare selected image and craft a proper shell command to install images using DSU system app, similar behavior to this: https://developer.android.com/topic/dsu#command-line, images will be installed via DSU system app.
Shizuku: when using app with shizuku permissions granted, similar behavior as ADB, however, we can use some APIs as shell authority, so we can invoke DSU installation activity without relying on shell commands, which also support other features, like logcat logging for debugging installation and other stuff, images will be installed via DSU system app.
System: when running as system app by installing DSU Sideloader module, system works the same as Shizuku, but doesn't require Shizuku itself, module proporse was to fix some common installation errors, anyway, images will be installed via DSU system app.
Root: when running with granted root permissisons, has same features as Shizuku operation mode, with some extras, since as root we can have MANAGE_DYNAMIC_SYSTEM permission, by default, images will be installed via DSU system app, however, there is a built-in installer option, which uses a in-app DSU installer, which will use Dynamic System APIs to install images: https://github.com/VegaBobo/DSU-Sideloader/blob/master/app/src/main/java/vegabobo/dsusideloader/installer/root/DSUInstaller.kt#L42

There is also a System/Root mode, that will combine features from root and system operation mode.

Thanks lots, but is that a yes?


Fix version sorting for detection highest installed version

Fix for #138
This doesn however not explain why the wrong folder is being selected for some reported cases. Meaning app-0.0.304 app-0.0.309 app-1.0.9001 and app-1.0.9002 should still be in the correct order when sorted lexicographically.
The .eslintrc was edited because there were more than 1000 linter errors because of LF linebreaks from the getgo. removing the specification for "windows", effectively defaulting to unix turned that into 0.
the package-lock.json was included despite a yarn.lock file being present because the project's README itself says to use npm.
It would be good to have some testing on this on Windows because I only tested it on Linux.

superseeded by #150