Implement terminal shell integration

Shell integration involves injecting sequences into the prompt such that we know additional information about what is happening in the process such as:

The start of the prompt
The end of the prompt/start of the input
The end of the input
The current working directory
The exit code of last process/command

This additional information enables a lot of possibilities:

A more reliable and faster mechanism for detecting the cwd - one that actually works on Windows (at least for pwsh). For Windows this would allow lighting up some functionality that's currently disabled like inheriting the cwd in split terminals or resolving links relative to the cwd.
Track command prompts, inputs and their output. This enables things like tracking command history, separating "execution blocks", collapsing past output, block-level actions/context menu, etc.
Potentially exposing a run command extension API which runs within an existing shell session and returns the exit code, additional state could also be exposed via Terminal.state.
Overall better awareness of what's going on inside the terminal, currently it's mostly a black box and the main ways of detecting things is via scanning all text (eg. tasks) or by listening for certain key presses (eg. current command tracking).
If we know reliably when input is being accepted into the shell and what the current input is, we could provide auto-complete of history - this could even be extended to extensions in a similar way that the text area does it. Taking this a step further, monaco could potentially be used which enabled multi-cursor, familiar shortcuts, etc. (that would lose native shell autocomplete though).

Notes:

This needs to be implemented on a per-shell basis
We're adding the ability to indicate "process capabilities" in https://github.com/microsoft/vscode/pull/133037, this could be used to take a progressive enhancement approach by lighting up functionality when it's available
The shell integration itself could be implemented either by instructing the user to amend their profile script or by exposing a new builtin terminal profile
Powershell on Windows support seems to be possible
For full Windows support on conpty, detecting the start of input positioning would need https://github.com/microsoft/terminal/issues/11220 (https://github.com/microsoft/terminal/issues/8698)

I break down high level goals and tasks below, with a bunch of notes that might be useful when working on the issues.
Goals:

Allow users to opt-in to shell integration terminals for supported shells which enhances their terminal experience
Shell integration should enhance make certain existing terminal features more robust (eg. command tracking, relative links, etc.)
New features should light up when shell integration is enabled (eg. Command history, cwd history, accessibility improvements)

Task breakdown

[ ] https://github.com/microsoft/vscode/issues/139395
[ ] https://github.com/microsoft/vscode/issues/139396
[ ] https://github.com/microsoft/vscode/issues/139397
[ ] https://github.com/microsoft/vscode/issues/139398
[ ] https://github.com/microsoft/vscode/issues/139399
[ ] https://github.com/microsoft/vscode/issues/139400
New commands

[ ] https://github.com/microsoft/vscode/issues/139401
[ ] https://github.com/microsoft/vscode/issues/139402

[ ] https://github.com/microsoft/vscode/issues/139403
[ ] https://github.com/microsoft/vscode/issues/139404
[ ] https://github.com/microsoft/vscode/issues/139405
[ ] https://github.com/microsoft/vscode-docs/issues/5038

Raw notes:

- Task: Explore how we're going to enable shell integration for each shell
- Supported shells: Pwsh, bash and zsh (fish if time allows)
	○ Task: Write pwsh shell integration script
	○ Task: Write bash shell integration script
	○ Task: Write zsh shell integration script
- Have an auto detected profile that allows running the default shell with shell integration (if it's detected as possible)
- Docs on the website on how shell integration is enabled
- We should handle shell integration enabled inner shells gracefully (eg. run bash in bash)
- Task: Surface shell integration/capabilities in the terminal tab hover
- Task: Handle partial support on Windows, initial explorations showed conpty messed up the shell integration sequences as they're output by the renderer not the parser. This means some capabilities may not work 100% on Windows.
- Shell integration should conditionally light up the following new capabilities:
	○ Command tracking
		§ Command tracking exists but its guessing on what lines commands are run, when this capability is enabled for the terminal the old mechanism (xterm addon) would be disabled and replaced by the new mechanism
		§ Task: Rename CommandTrackerAddon to NaiveCommandTrackerAddon https://github.com/Microsoft/vscode/blob/8cd6ff6d7301fc66c119c44f4e031db76cfe87be/src/vs/workbench/contrib/terminal/browser/xterm/commandTrackerAddon.ts#L24
		§ The old and new command tracker commands should share similar interfaces to reduce code duplication
	○ Cwd tracking
		§ Currently cwd tracking is done on macOS and Linux by running lsof or checking procos respectively, these mechanism can be disabled if we get the cwd from shell integration as it will come in faster and without the need for additional polling
- The following features will be added based on active capabilities:
	○ Command history command (dep: Command tracking)
		§ This will present a quick pick with all recently run terminal commands, including command name, cwd, exit code
		§ When selected in the quick pick, the command will run in the active terminal
		§ Should have smoke tests
		§ Whatever tracks command history should have unit tests
		§ Considerations:
			□ Do we have a maximum of entries we track?
			□ Should this be sorted by recency of frequency?
			□ Can we avoid settings for this feature?
	○ Syncing of textarea for screen readers (dep: Command tracking)
		§ Currently we clear the invisible text area in xterm.js when we're unsure what the prompt's state is, with real command tracking we will be able to synchronize the textarea with the prompt and cursor to get left/right/backspace/delete correctly announcing the textual changes to screen reader users
		§ Considerations:
			□ This might need to be a new API in xterm.js so it avoids clearing the textarea
	○ Better cwd detection (dep: Cwd tracking)
		§ This will replace the naïve cwd detection approach when it's available and enable relative link and splitCwd support on Windows for example.
	○ Recent terminal working directories command (dep: Cwd tracking)
		§ This will present a quick pick of all recent terminal directories
		§ This should share code with the command history command as both will present a list and send text to the shell
		§ Should have smoke tests
		§ Considerations:
			□ Same as command history


derivative of softmax is indepedent of max

two less kernels per softmax backward. testing on bert seems to be 3% faster

How can things like this be autodiscovered?

don't know, maybe when we do math on lazybuffer level it would end up being a no-op somewhere and be cancelled?


Fix --target to work on exe: targets

... by disabling -fno-code for those targets
... as caught by @basile-henry in:
https://github.com/ndmitchell/ghcid/pull/302#issuecomment-597015365

Thanks for working to identify and fix this!

Released as 0.8.3


Module did not self-register

When trying to use mmagic within worker threads im receivenig below error:
Module did not self-register: '****\node_modules\mmmagic\build\Release\magic.node'.
node:internal/modules/cjs/loader:1183
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: Module did not self-register: '****\node_modules\mmmagic\build\Release\magic.node'.
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1183:18)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (****\node_modules\mmmagic\lib\index.js:1:13)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at require.extensions.<computed> (****\node_modules\ts-node\src\index.ts:1361:43)
    at Object.require.extensions.<computed> [as .js]

node: v16.13.2
os: Windows 11
While being used within main thread - everything works just fine.

I've managed to workaround and it is simply exclusion of mmm.Magic instance from thread, but it seems not the best solution.

mmmagic is not compatible with workers at the moment.

@mscdex I've also got a case where I need to use mmmagic from a worker thread. It looks like the first step towards unblocking that would be migrating from nan to node-api. I believe this would also change the minimum node version to at least 8.6.0 since that was when node-api was introduced.
Would there be any interest in a PR for that or would it be too drastic of a change?

I'm not comfortable using node-api yet. AFAIK nan has a way to mark a module as worker-friendly, but of course that requires some code changes because you need to make sure that (per-worker/isolate/whatever) resources are properly cleaned up whereas currently there are some globals used.


vacuum version outputs latest when installing using go install

When you install vacuum using the following command:
go install<EMAIL_ADDRESS>
And you run the version command:
vacuum version

It outputs the version as latest
This might be related to https://github.com/daveshanley/vacuum/issues/548
Possible fixes might be: https://github.com/canonical/pebble/issues/225 and https://github.com/sigstore/rekor/issues/212
Thanks for the awesome tool btw!

A potential solution is to set the version explicitly like this:
go install -ldflags="-X 'main.version=0.14.2'"<EMAIL_ADDRESS>
However, this approach is error-prone.


making argparse use sys.argv so it auto picks up argv[0]

dcos_generate_config.sh --help goes from:
dcos_installer <...>

to:
dcos_generate_config.sh <...>

Should help reduce customer confusion (dcos_installer sounds a lot like dcos_install.sh)
Issues
https://mesosphere.slack.com/archives/documentation/p1477923100001079
Checklist

[x] Included a test which will fail if code is reverted but test is not
[x] Followed relevant code rules Rules for Packages and Systemd

unfortunately not currently working / needs more tweaking (probably dcos_installer_wrapper needs to be updated).

Currently: usage: installer_internal_wrapper [-h] [--hash-password [password]]. Still got a little further to go...

Now working:
 bash dcos_generate_config.sh --help
Extracting image from this script and loading into docker daemon, this step can take a few minutes
dcos-genconf.0a969118e847b7a4ae-dee2bd5518070c2f68.tar
cb15790dce5c: Loading layer [==================================================>] 22.45 MB/22.45 MB
ed644ccbf9ef: Loading layer [==================================================>] 4.074 MB/4.074 MB
7e0f42ab0655: Loading layer [==================================================>] 154.7 MB/154.7 MB
bcb8920462cc: Loading layer [==================================================>]  2.56 kB/2.56 kB
6576c985f668: Loading layer [==================================================>] 584.4 MB/584.4 MB
4759bf56ed39: Loading layer [==================================================>] 6.144 kB/6.144 kB
3d48ac841231: Loading layer [==================================================>] 3.072 kB/3.072 kB
52281631c1a8: Loading layer [==================================================>] 6.144 kB/6.144 kB
6c0ab4bf1f2d: Loading layer [==================================================>] 1.536 kB/1.536 kB
Loaded image: mesosphere/dcos-genconf:0a969118e847b7a4ae-dee2bd5518070c2f68
usage: dcos_generate_config.sh [-h] [--hash-password [password]]
                               [--set-superuser-password [password]] [-v]
                               [--offline] [--cli-telemetry-disabled] [--web]
                               [--version] [--validate-config]
                               [--aws-cloudformation] [--genconf]
                               [--preflight] [--postflight] [--uninstall]
                               [--deploy] [--install-prereqs]

DC/OS Install and Configuration Utility

optional arguments:
  -h, --help            show this help message and exit
  --hash-password [password]
                        Hash a password and print the results to copy into a
                        config.yaml.
  --set-superuser-password [password]
                        Hash the given password and store it as the superuser
                        password in config.yaml
  -v, --verbose         Verbose log output (DEBUG).
  --offline             Do not install preflight prerequisites on CentOS7,
                        RHEL7 in web mode
  --cli-telemetry-disabled
                        Disable the CLI telemetry gathering for SegmentIO
  --web                 Run the web interface
  --version             Print the DC/OS version
  --validate-config     Validate the configuration for executing --genconf and
                        deploy arguments in config.yaml
  --aws-cloudformation  Generate AWS Advanced AWS CloudFormation templates
                        using the provided config
  --genconf             Execute the configuration generation (genconf).
  --preflight           Execute the preflight checks on a series of nodes.
  --postflight          Execute postflight checks on a series of nodes.
  --uninstall           Execute uninstall on target hosts.
  --deploy              Execute a deploy.
  --install-prereqs     Execute the preflight checks on a series of nodes.


Show keyboard shortcuts of all Dendron commands (including bundled extensions)

@kevinslin  - were you thinking something like a shift+? showing a pane of all important commands (like in gmail)? Can't people already see this in the workbench keyboard shortcuts? Maybe we can pre-populate a query to that?

Yeah, pre populate a query would be great. I'm not sure if vscode supports
that. Other solution is to have a question mark in the preview. But that's
going to be easier once we switch the preview engine
On Sun, Apr 25, 2021 at 2:58 AM Kiran Pathakota @.***>
wrote:

@kevinslin https://github.com/kevinslin - were you thinking something
like a shift+? showing a pane of all important commands (like in gmail)?
Can't people already see this in the workbench keyboard shortcuts? Maybe we
can pre-populate a query to that?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/dendronhq/dendron/issues/148#issuecomment-826295107,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADD52L74FCVS4IFIRTSVGLTKPRTPANCNFSM4QTGU7UQ
.


refactor: remove enums in favor of const objects

Changes remaining enums to const objects and exports all user relevant
"enums" from index.ts. Enums are frozen to ensure they remain static.
Added a lint rule to prevent further enums.
Corrected mistake in sourcemap emit settings.
NODE-2973

There were a few reasons, one was const enums can't be used by users since they disappear at compile time, another was that an enum forces you to use the enum even if you pass in an equivalent value.
enum Weekday { Monday = 1, ... };
function printDay(day: Weekday);

Our union of the possible values pattern would permit you to pass in 1 directly for example. This comes up when we have a variable that is of type number and we've done a check to ensure its one of the acceptable values but there's still a type error unless you cast etc.


External Minio connectivity issue

I am trying to use an external minio for Milvus in standalone mode, but I am getting an access denied error.
I followed instructions here to create the config - https://milvus.io/docs/object_storage_operator.md
Here is the manifest I used
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: milvus-standalone
  namespace: milvus
spec:
  components:
    image: milvusdb/milvus:v2.4.0-rc.1
    standalone:
      serviceType: NodePort
    volumes:
      - name: tls
        secret:
          secretName: milvus-tls
      - name: cacert
        configMap:
          name: cacert.pem
    volumeMounts:
      - name: tls
        mountPath: /var/lib/milvus/cert
      - name : cacert
        mountPath: /var/lib/milvus/cacert
  dependencies:
    etcd:
      inCluster:
        values:
          image:
            pullPolicy: IfNotPresent
            repository: milvusdb/etcd
            tag: 3.5.5-r4
          persistence:
            enabled: true
            accessMode: ReadWriteOnce
            size: 10Gi
            storageClass: storage-class
          replicaCount: 1
          extraEnvVars:
            - name: ETCD_MAX_REQUESTS_BYTES
              value: "1572864"
    storage:
      external: true
      type: "MinIO"
      endpoint: "sidekick-minio:9000"
      secretRef: "my-minio-secret"
  config:
    common:
      security:
        authorizationEnabled: true
        tlsMode: 2
    tls:
      serverPemPath: /var/lib/milvus/cert/tls.crt
      serverKeyPath: /var/lib/milvus/cert/tls.key
      caPemPath: /var/lib/milvus/cacert/cacert.pem
    minio:
      bucketName: milvus-data
      rootPath: milvus-test
      useSSL: false

Error from Milvus
Status:
  Conditions:
    Last Transition Time:  2024-03-29T22:28:16Z
    Message:               Etcd endpoints is healthy
    Reason:                EtcdReady
    Status:                True
    Type:                  EtcdReady
    Last Transition Time:  2024-03-29T22:28:16Z
    Message:               checkMinIO with backoff failed: Access Denied.
    Reason:                ClientError
    Status:                False
    Type:                  StorageReady
    Last Transition Time:  2024-03-29T22:28:16Z
    Message:               MsgStream is ready
    Reason:                MsgStreamReady
    Status:                True
    Type:                  MsgStreamReady
    Last Transition Time:  2024-03-29T22:28:16Z
    Message:               [standalone] not ready, detail: component[standalone]: deployment not created
    Reason:                MilvusComponentNotHealthy
    Status:                False
    Type:                  MilvusReady
    Last Transition Time:  2024-03-29T22:28:16Z
    Message:               Milvus components[standalone] are updating
    Reason:                MilvusComponentsUpdating
    Status:                False
    Type:                  MilvusUpdated
  Ingress:
    Load Balancer:
  Observed Generation:  1
  Replicas:
  Status:  Pending

I had used the same set of credentials to access the same Minio bucket using aws cli.

I was able to connect to external Minio by using storage.type as "S3" instead of "Minio"


Made CallbackGame model serializable

Also please add export of CallbackGame in Models.js file, it's missing now.

Hey, i dont think there is a reason to make it serializable because its just a placeholder

Just because I wanna do the things like
let keyboard = new InlineKeyboardMarkup([[
    new InlineKeyboardButton('Play Game', null, null, null, null, new CallbackGame())
]]);
scope.api.sendGame(scope.chatId, config.gameShortName, {
    reply_markup: JSON.stringify(keyboard.toJSON())
})

I'm pretty sure that all models should have such methods, so will be cool to extend some BaseModel or add mixins


Update MEO Node ID Error

https://github.com/Reed-CompBio/spras/issues/189 fixing this issue

The way I made generate-inputs test suite would require me to change the format of data1 and data0 to test MEO's update.

The solution looks good to me.

The way I made generate-inputs test suite would require me to change the format of data1 and data0 to test MEO's update.

Does this still need to be done?

I just added an idea, but the only thing I wasn't able to change is the parse_outputs domino case

localized the testing to be done only in generate inputs instead of it being coupled to the changes in inputs and the config.yaml file used as the examples.


improvement support mixed uppper-lower case of timezone names

Proposed changes
Issue Number: close #xxx

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall

run buildall


Errors not shown in REPL

Hello, I have a further problem with the new REPL console. Sometimes the errors are not shown in the console but the code does not run completely. So I have no hints where the bug is. Same code in normal julia REPL (outside atom) gives an error.
ERROR: LoadError: UndefVarError: L not defined
Stacktrace:
 [1] anonymous at ./<missing>:?
 [2] include_from_node1(::String) at ./loading.jl:576
 [3] include(::String) at ./sysimg.jl:14
 [4] process_options(::Base.JLOptions) at ./client.jl:305
 [5] _start() at ./client.jl:371
while loading
...

This should not be the case, I think.

Does this happen when evaluating something in the REPL or when evaling something in an editor?

This happens when evaluating from the editor.

Hm, can you describe what you're doing exactly?

It is really easy to reproduce:
This code run in atom without an error message
f(x) = y + 2
f(1)

While in an external julia REPL it roduces the right error:
julia> f(x) = y + 2
f (generic function with 1 method)

julia> f(1)
ERROR: UndefVarError: y not defined
Stacktrace:
 [1] f(::Int64) at ./REPL[1]:1

Ah I see now, will fix. This is only relevant when running a complete file instead of running that code line-by-line.
For now, there's a setting called "Error Notifications" that displays those errors as a pop up in Atom.

Thanks. I will turn the notifications on until the fix arrives.

Should be fixed with the latest version of Atom.jl.


Fix handling of devices with minor>255

Device minor numbers are 12-bit, and the kernel expects combined major-minor device IDs to be passed as a 32-bit integer with the following components, from MSB to LSB:

12 zero bits
the 4 upper bits of the minor number
all 8 bits of the major number
the 8 lower bits of the minor number

Currently LXD writes (major | minor >> 8) in the bits where the kernel expects to find the major number.

This pull request didn't trigger Jenkins as its author isn't in the whitelist.
An organization member must perform one of the following:

To have this branch tested by Jenkins, use the "ok to test" command.
To have a one time test done, use the "test this please" command.

Those commands are simple Github comments of the format: "jenkins: COMMAND"

jenkins: test this please

jenkins: test this please

thanks!


IL3820 (GDEH029A1) crashes when setting to portrait modes

Describe the issue
Looks like the hardware rotation related code are not implemented for IL3820, and it may cause crashes when setting to portrait (or inverted portrait) modes.
I think I know why it crashes with garbage result rendered. Because this register is not set correctly:

I will try fixing it later tonight and submit a PR.
Code to reproduce the issue

Use the latest code at this commit: https://github.com/lvgl/lv_port_esp32/commit/9b987457161681a184d9421e960f20f56b22612b

Enable IL3820, set to 296x128 resolution, and portrait modes in menuconfig

Expected Results
It should just works
Actual Results
It crashes like this, with some garbage results rendered on the screen:
ELF file SHA256: 3f5709268e81b560

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:7068
load:0x40078000,len:13696
load:0x40080400,len:4000
0x40080400: _init at ??:?

entry 0x40080688
I (29) boot: ESP-IDF v4.2-dev-1660-g7d7521367 2nd stage bootloader
I (29) boot: compile time 12:21:49
I (29) boot: chip revision: 1
I (33) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (40) boot.esp32: SPI Speed      : 40MHz
I (45) boot.esp32: SPI Mode       : DIO
I (50) boot.esp32: SPI Flash Size : 2MB
I (54) boot: Enabling RNG early entropy source...
I (60) boot: Partition Table:
I (63) boot: ## Label            Usage          Type ST Offset   Length
I (70) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (78) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (85) boot:  2 factory          factory app      00 00 00010000 00100000
I (93) boot: End of partition table
I (97) boot_comm: chip revision: 1, min. application chip revision: 0
I (104) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x0bde0 ( 48608) map
I (132) esp_image: segment 1: paddr=0x0001be08 vaddr=0x3ffb0000 size=0x02358 (  9048) load
I (136) esp_image: segment 2: paddr=0x0001e168 vaddr=0x40080000 size=0x00404 (  1028) load
0x40080000: _WindowOverflow4 at /home/hu/esp/esp-idf/components/freertos/xtensa/xtensa_vectors.S:1730

I (139) esp_image: segment 3: paddr=0x0001e574 vaddr=0x40080404 size=0x01aa4 (  6820) load
I (150) esp_image: segment 4: paddr=0x00020020 vaddr=0x400d0020 size=0x27330 (160560) map
0x400d0020: _stext at ??:?

I (217) esp_image: segment 5: paddr=0x00047358 vaddr=0x40081ea8 size=0x09934 ( 39220) load
0x40081ea8: esp_restart_noos at /home/hu/esp/esp-idf/components/esp32/system_api_esp32.c:98

I (241) boot: Loaded app from partition at offset 0x10000
I (241) boot: Disabling RNG early entropy source...
I (242) cpu_start: Pro cpu up.
I (245) cpu_start: Application information:
I (250) cpu_start: Project name:     lvgl-demo
I (255) cpu_start: App version:      9b98745-dirty
I (261) cpu_start: Compile time:     Jun  8 2020 14:34:16
I (267) cpu_start: ELF file SHA256:  3f5709268e81b560...
I (273) cpu_start: ESP-IDF:          v4.2-dev-1660-g7d7521367
I (279) cpu_start: Starting app cpu, entry point is 0x400816f0
0x400816f0: call_start_cpu1 at /home/hu/esp/esp-idf/components/esp32/cpu_start.c:286

I (271) cpu_start: App cpu up.
I (290) heap_init: Initializing. RAM available for dynamic allocation:
I (297) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (303) heap_init: At 3FFBC308 len 00023CF8 (143 KiB): DRAM
I (309) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (315) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (322) heap_init: At 4008B7DC len 00014824 (82 KiB): IRAM
I (328) cpu_start: Pro cpu start user code
I (346) spi_flash: detected chip: gd
I (347) spi_flash: flash io: dio
W (347) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (357) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (10) lvgl_helpers: Display hor size: 296, ver size: 128
I (10) lvgl_helpers: Display buffer size: 4736
I (10) lvgl_helpers: Initializing SPI master for display
I (20) lvgl_helpers: Configuring SPI host HSPI_HOST (1)
I (30) lvgl_helpers: MISO pin: -1, MOSI pin: 21, SCLK pin: 22
I (30) lvgl_helpers: Max transfer size: 9472 (bytes)
I (40) lvgl_helpers: Initializing SPI bus...
I (50) disp_spi: Adding SPI device
I (50) disp_spi: Clock speed: 40000000Hz, mode: 0, CS pin: 17
I (50) IL3820: init
I (110) IL3820: clear
I (1810) IL3820: clear
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x400df29f  PS      : 0x00060930  A0      : 0x800d6a89  A1      : 0x3ffc1f50
0x400df29f: lv_disp_is_true_double_buf at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_hal/lv_hal_disp.c:400

A2      : 0x00000000  A3      : 0x3ffc1f70  A4      : 0x00000000  A5      : 0x00000000
A6      : 0x3ffb43c4  A7      : 0x00000001  A8      : 0x800d6836  A9      : 0x3ffc1f30
A10     : 0x00000000  A11     : 0x00000000  A12     : 0x400d600c  A13     : 0x3ffb43c4
0x400d600c: lv_obj_design at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_core/lv_obj.c:3507

A14     : 0x00000127  A15     : 0x00000000  SAR     : 0x00000020  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000  LBEG    : 0x400013f9  LEND    : 0x4000140d  LCOUNT  : 0xfffffffc

Backtrace:0x400df29c:0x3ffc1f50 0x400d6a86:0x3ffc1f70 0x400d6bdf:0x3ffc1fa0 0x400d6cb9:0x3ffc1fd0 0x400d6d1c:0x3ffc1ff0 0x400e069d:0x3ffc2020 0x400e0788:0x3ffc2040 0x400d33d2:0x3ffc2060 0x40085505:0x3ffc20c0
0x400df29c: lv_disp_is_true_double_buf at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_hal/lv_hal_disp.c:399

0x400d6a86: lv_refr_area_part at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_core/lv_refr.c:507

0x400d6bdf: lv_refr_area at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_core/lv_refr.c:455 (discriminator 2)

0x400d6cb9: lv_refr_areas at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_core/lv_refr.c:377

0x400d6d1c: _lv_disp_refr_task at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_core/lv_refr.c:199

0x400e069d: lv_task_exec at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_misc/lv_task.c:398 (discriminator 1)

0x400e0788: lv_task_handler at /home/hu/Projects/lv_port_esp32/build/../components/lvgl/lvgl/src/lv_misc/lv_task.c:142

0x400d33d2: guiTask at /home/hu/Projects/lv_port_esp32/build/../main/main.c:117

0x40085505: vPortTaskWrapper at /home/hu/esp/esp-idf/components/freertos/xtensa/port.c:143

ELF file SHA256: 3f5709268e81b560

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:7068
load:0x40078000,len:13696
load:0x40080400,len:4000
0x40080400: _init at ??:?

ESP32 Chip version
v1
ESP-IDF version
v4.2-dev-1660-g7d7521367
Development kit used
ESP-32S v1.1
Development machine OS
Ubuntu 20.04

Hello @C47D and @aircable
Firstly, according to the code at the latest master commit, it does NOT have any rotation support for IL3820. It definitely won't work.
So far I've tried adding the support to get it working, but no luck with these attempts:

Swapping EPD_PANEL_WIDTH and EPD_PANEL_HEIGHT: won't work - crash
Swapping the width and height + set the entry mode (register 0x11) to 0x01 or 0x03: won't work - crash
Swap the stuff mentioned above, also try swapping the area->x1, area->x2 to area->y1, area->y2 and some other width/height related macros, it won't crash any more but the screen will display some random garbage result.

Anyway I can't fix it for now as I have something else need to be done soon. But I'm happy to help if necessary.
By the way, the code should be cleaned up with some sorts of formatter/linter. Some spelling or abbreviations are wrong or weird. The overall code format makes me feels a bit hard to read.
Regards,
Jackson

I agree the code needs to be clean up.

I'm sorry I have not tested landscape mode, only portrait. And I'm pretty
sure it needs some
extra code for the transfer of partial blocks to the display.
I'll be back on working on the driver soon. In the meantime please feel
free to clean up the code.
I know, I have my own coding style ;-)
On Mon, Jun 8, 2020 at 7:42 AM Carlos Diaz<EMAIL_ADDRESS>wrote:

I agree the code needs to be clean up.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lvgl/lv_port_esp32/issues/149#issuecomment-640673585,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGK5BQUJQOL7T4UF3VU24TRVT2FLANCNFSM4NX7CJOA
.

Don't worry @aircable, I'm trying to get a display with this controller to test it.

Hello @C47D

Does the code works in landscape mode? If so, can you copy the monitor output in here?

It works in landscape mode. However, now the current landscape mode in menuconfig works but the screen is portrait (i.e. in 128x296, like this: https://github.com/aircable/lv_port_esp32/blob/master/images/Waveshare_EPD2in9.png), while the portrait mode in menuconfig will cause crashes or garbage result.

I'm also trying to get a display with this controller to test it.

Just grab a Waveshare 2.9 inch module: https://www.waveshare.com/wiki/2.9inch_e-Paper_Module, or this one with a connector board if necessary: https://www.aliexpress.com/item/32218091929.html. They are the same.

Also looks like for this panel, according to GoodDisplay's demo code, this default orientation is  128x296 instead of 296x128. So now the landscape mode orientation is actually correct.

Just grab a Waveshare 2.9 inch module: https://www.waveshare.com/wiki/2.9inch_e-Paper_Module, or this one with a connector board if necessary: https://www.aliexpress.com/item/32218091929.html. They are the same.

Thanks for the link, I tried to buy some displays last weekend on ebay and they don't have the usual postal service available, and I can't afford the shipment cost. I will try to source the display locally, I'm based in Mexico, so it's a bit hard.
I checked the IL3028 code and indeed it doesn't handle portrait mode, I will try to send you some patches to enable this.

Just grab a Waveshare 2.9 inch module: https://www.waveshare.com/wiki/2.9inch_e-Paper_Module, or this one with a connector board if necessary: https://www.aliexpress.com/item/32218091929.html. They are the same.

Thanks for the link, I tried to buy some displays last weekend on ebay and they don't have the usual postal service available, and I can't afford the shipment cost. I will try to source the display locally, I'm based in Mexico, so it's a bit hard.
I checked the IL3028 code and indeed it doesn't handle portrait mode, I will try to send you some patches to enable this.

Hello @C47D
You should try the GoodDisplay official store on AliExpress.
If you really want to get one, I can contact GoodDisplay sales directly as I know a guy there. Please send me an email if necessary.
Regards,
Jackson

By the way @C47D @aircable ,
I think this kind of polling is not acceptable for production, as it wastes the CPU times anyway: https://github.com/lvgl/lv_port_esp32/blob/8bc5e18432f710a12981f69721b9e34327ffa596/components/lvgl_esp32_drivers/lvgl_tft/il3820.c#L94
It really should be replaced to interrupt instead.

Sure, contributions are very welcomed, I'm waiting for the confirmation of the display I tried to buy, it should take a long time to arrive tho.

Hello @C47D

We can make this project better together, this is the first revision of this particular driver and it can be improved, other drivers have been improved and surely can improve even more.

Yea I totally agree. This is just a PoC level thing. But it should be approved later.
If you have any difficulties on buying those panels, please send me an email at<EMAIL_ADDRESS>. I can help you out.
Jackson

Hello @C47D @aircable
Here's the latest status. The code can be found here: https://github.com/huming2207/lv_port_esp32/tree/fix/il3820-rotate
I've adjusted something in il3820_flush() and il3820_set_px_cb() to get it properly flushed to framebuffer in 296x128 direction, instead of 128x296. I've also set the R11h data entry register to 0x03. But still no luck.
Here's what it looks like for now.

The actual dem UI code is drawing a 10px * 5px square, like this:
    static lv_style_t obj_style;
    lv_style_set_bg_color(&obj_style, LV_STATE_DEFAULT, LV_COLOR_BLACK);

    lv_obj_t* obj = lv_obj_create(lv_scr_act(), NULL);
    lv_obj_set_size(obj, 10, 5);
    lv_obj_align(obj1, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 0);
    lv_obj_add_style(obj1, LV_OBJ_PART_MAIN, &obj_style);

From the latest pattern rendered, it looks like the panel hasn't been rotated to 296x128 at all.  Please point it out if possible. Thanks.
Meanwhile I'm not too sure for the algorithm used in il3820_set_px_cb(). I think my implementation for the portrait mode is totally wrong. Please take a look.
And also I don't understand why we need to round the x axis in the round_cb() in the original landscape mode. @aircable Could you please explain why you've done that? Thanks!
Regards,
Jackson

Hi @C47D

I'm not 100% sure but when using monochrome displays the LVGL theme configuration should be updated, it's not the same as using a RGB TFT display, how are you configuring the LVGL themes?

Yea I did set to monochrome theme with ascii8 font.
Jackson

Hi @huming2207, sorry for the late reply, just got the display.

@C47D Thanks for your update. What's your current config?

I'm using it in landscape mode, the weird thing is that I think it's crashing somewhere on the lvgl code and not in the SPI code.
I'm cleaning up the code and adding comments to it in a separated branch, I haven't pushed it to remote.

I'm using it in landscape mode, the weird thing is that I think it's crashing somewhere on the lvgl code and not in the SPI code.
I'm cleaning up the code and adding comments to it in a separated branch, I haven't pushed it to remote.

Because the buffer gets overflow, as the landscape mode coordinates are wrong.

What I understood is, we need to do is to rotate the framebuffer first, before pushing to the panel. Unlike U8g2 or some other UI libraries, LVGL does not support rotating directly. We need to either 1. implement the framebuffer rotation for these panels or 2. add native rotation support for LVGL, like U8g2 did.

Hi,
Here's what I've tried, this is the first time I work with e-paper displays:

Try to replicate the issue on the CodeBlock simulator, I can't because the win_driver doesn't work with LV_COLOR_DEPTH=1.
Set DISP_BUF_SIZE to LV_HOR_RES_MAX*LV_VER_RES_MAX, this make the esp32 not to hardfault, but I get garbage as output, this is where we need to do what you say. But LVGL does support rotation, on main, the lv_disp_drv_t disp_drv have a field named rotated, we need to set it to 1. I need to make this work for all other drivers, so we don't need to change the LV_HOR_RES_MAX and LV_VER_RES_MAX in lv_conf.h.

I'm just guessing that the overflow is caused when calculating the byte_index in the il3820_set_px_cb function:
void il3820_set_px_cb(struct _disp_drv_t * disp_drv, uint8_t* buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
        lv_color_t color, lv_opa_t opa) {

	/* buf_w will be ignored, the configured CONFIG_LVGL_DISPLAY_HEIGHT and _WIDTH,
	   and CONFIG_LVGL_DISPLAY_ORIENTATION_LANDSCAPE and _PORTRAIT will be used. */
    uint16_t byte_index = 0;
    uint8_t  bit_index = 0;

	byte_index = y + (( x>>3 ) * CONFIG_LVGL_DISPLAY_HEIGHT);
	bit_index  = x & 0x7;

    if ( color.full != 0 ) {
        BIT_SET(buf[byte_index], 7 - bit_index);
    } else {
        BIT_CLEAR(buf[byte_index], 7 - bit_index);
    }
}

I don't have any jtag to debug this properly, so I need to learn how this displays graphic RAM gets updated, how to properly configure the Data Entry Mode and make it work for all four configurations.
I will push my local work branch, it's mostly cleanup of the il3820 driver code.

Hi,
Just wanted to share my progress, I've added some logging to set_px and flush functions, here's the output for printing an 'a' into the top left side of the display.
I (10) lvgl_helpers: Display hor size: 128, ver size: 296
I (10) lvgl_helpers: Display buffer size: 4736
I (10) lvgl_helpers: Initializing SPI master for display
I (20) lvgl_helpers: Configuring SPI host HSPI_HOST (1)
I (30) lvgl_helpers: MISO pin: -1, MOSI pin: 23, SCLK pin: 18
I (30) lvgl_helpers: Max transfer size: 9472 (bytes)
I (40) lvgl_helpers: Initializing SPI bus...
I (50) disp_spi: Adding SPI device
I (50) disp_spi: Clock speed: 8000000Hz, mode: 0, CS pin: 21
I (50) IL3820: init
I (110) IL3820: clear
I (1800) IL3820: clear
I (2310) IL3820: px: {2:2}, b: 2
I (2310) IL3820: CLEAR(buf[2], 5)
I (2310) IL3820: px: {3:2}, b: 3
I (2310) IL3820: CLEAR(buf[2], 4)
I (2320) IL3820: px: {4:2}, b: 4
I (2320) IL3820: CLEAR(buf[2], 3)
I (2320) IL3820: px: {5:3}, b: 5
I (2330) IL3820: CLEAR(buf[3], 2)
I (2330) IL3820: px: {2:4}, b: 2
I (2340) IL3820: CLEAR(buf[4], 5)
I (2340) IL3820: px: {3:4}, b: 3
I (2340) IL3820: CLEAR(buf[4], 4)
I (2340) IL3820: px: {4:4}, b: 4
I (2350) IL3820: CLEAR(buf[4], 3)
I (2360) IL3820: px: {5:4}, b: 5
I (2360) IL3820: CLEAR(buf[4], 2)
I (2360) IL3820: px: {1:5}, b: 1
I (2360) IL3820: CLEAR(buf[5], 6)
I (2370) IL3820: px: {5:5}, b: 5
I (2380) IL3820: CLEAR(buf[5], 2)
I (2380) IL3820: px: {2:6}, b: 2
I (2380) IL3820: CLEAR(buf[6], 5)
I (2380) IL3820: px: {3:6}, b: 3
I (2390) IL3820: CLEAR(buf[6], 4)
I (2400) IL3820: px: {4:6}, b: 4
I (2400) IL3820: CLEAR(buf[6], 3)
I (2400) IL3820: px: {5:6}, b: 5
I (2400) IL3820: CLEAR(buf[6], 2)
I (2410) IL3820: linelen: 16
I (2420) IL3820: IL3820_COLUMNS: 16
I (2420) IL3820: address: 0
I (2420) IL3820: flush: 0,127 at 0,295

And the 'a' being displayed with some notations

From this I can assume that if I want to "rotate" the display 180° I should set the X and Y counters to the max values on this display (296 and 128), and set the counters to decrement _XDYDY. I guess this is what you've been saying since the beginning, but until now I can see how LVGL turn pixels into black dots on the display (by clearing the 'bit' on the buf array).

Hi @C47D ,
Sorry I was extremely busy these days for some of my projects at work. Yes looks like the XDYDY mode didn't really work somehow.
Also, this official demo code may help: http://www.good-display.com/product/201.html
Regards,
Jackson

Hi Jason,
I've been able to configure the display in landscape inverted. Will check the link later today. I been having limited access to my work computer.
Regards,
Carlos

Hello @C47D
Sorry for the late reply. Have you got any luck for now?
Maybe we should also try to examine the initialise sequence.
Regards,
Jackson

Hi @huming2207,
Sorry, I haven't been able to work on this, got a job non related to computers and almost had no free time to work on this, do you have any luck?

Hello @C47D
Sorry I was busy working on another two projects for BLE with NimBLE on ESP32. I think the issue might be either the transform callback is still wrong or this display panel controller is buggy.
We had another issue with another similar panel before. Their temperature register value is invalid if the read operation frequency is higher than 3MHz. Other registers can be read with 5MHz but that temperature register can only accept 3MHz.
But meanwhile, on their datasheet, the highest SPI read operation clock speed is 5MHz. So I'm not surprised if that rotation setting is really buggy.
Jackson

Almost there...

@C47D Congrats!
By the way, maybe it's a bit off-topic. But I think we can later port a QuickJS JavaScript binding. I've just ported a quick & dirty version of QuickJS for ESP32 last night: https://github.com/huming2207/quickjs-esp32

I will create a new predefined display configuration for this e-paper display once it's working properly. Will let you know then.

@C47D Yep thx. I'm happy to check it out.

I tried several data entry configurations but couldn't make it work, so I'm "mirroring" the X pixels in software, it's ugly but it seems to work, at least it displays Hello World properly.

Right now it only works on portrait and landscape orientations, none of the inverted options work. You need to set the display width to 128 and height to 296. It's not production ready code, if you have some free time test it and let me know if it fails or improvements you have in mind.
I pushed the changes to the fix/il3820_portrait branch.

Hi @C47D
Great thanks for your work!
I just did a quick test and I think it looks all good for now.
I've also tested a few times for the data entry mode. I think it is just buggy. It won't work as I expected but just generating some garbage results.
Regards,
Jackson

Here's my panel with your original code. It looks perfect!
Jackson

Nice, I will create a new predefined display configuration so it's easier to choose the right options. Also this last photos are in landscape mode, not portrait, will fix that as well.

Hello @C47D
Yep, thanks for your efforts too!
Meanwhile, I think LVGL should provide its native support for rotation and better monochrome/greyscale support, preferably in the config, without any conversion callbacks in the display driver. This is for in case some weird panels that:

have no or buggy hardware rotation in its controller chips;
and/or, two or more primary/secondary-style controller chips in one panel (quite common in some larger e-paper panels)

This is actually quite common for some e-paper panels. It would be very helpful for us to port more panels for this library.
Regards,
Jackson

Hi @huming2207,
I didn't knew the IL3820 controller supported cascaded controllers, but I think it should be up to the user to handle this.
What improvements on monochrome displays o you have in mind?
Carlos

Hi @C47D
Sorry for the late reply.
I was thinking about the ghost marks and those panels with 2+ controllers. But I think maybe it's enough for using the rounder_cb and set_px_cb to achieve the monochrome/greyscale conversions anyway. But it would be better if LVGL can provide a rotation function. I know this can be also done by some hacks in set_px_cb, but it may be a bit repetitive if we later encounter another a few panels that can't do hardware rotation properly.
Jackson

Hi Jason,
I'm going to merge #179, this is the first part of fixing the IL3820 driver issues, I removed the portrait inverted and landscape inverted options when selecting this controller.
Next week I will add the predefined display configuration for it.
If you want you can open an issue on LVGL main repository with the request you did above and see what is possible to do.

@C47D Yep I will leave a feature request on main LVGL repo later. Again thanks for your efforts in regards to this issue!

No problem @huming2207, always happy to help, sorry for taking so long to get it working. I will close the issue.


Merge mouse whole cell + infiltrating immune cell in cancer

Hi Kevin.
I want to know the percentage of a subset of immune cells in tumor cells in mouse.
So, I'm thinking of combining scRNA-seq data of mouse whole body cells and immune cells isolated from tumors in mouse cancer transplantation models to make simulate data and make predictions.
Do you think this method is possible from a producer's point of view?
This simulate data have about 100 cell types.
May I have your suggestion on this issue? Thanks a lot!
Masaki

Hi Masaki,
it certainly sounds feasible. But I cannot tell how you good this will work in the end, as I haven't tested this with Scaden (or any other deconvolution method).
Generally all I can tell you (unfortunately) is that the training dataset/tissue should be as close as possible to the target dataset.  And unfortunately, currently Scaden isn't able to tell. I wanted to add uncertainty measurements to Scaden for a long time now but didn't find the time so far - maybe this winter I can add it. This would then allow you to do these kind of experiments and hopefully Scaden could tell you how much you can trust the results.
So if it's not too much work for now I would say try it out, maybe also user another deconvolution algorithm on top. If both methods agree to some extent, you can probably trust your results.
Good luck!
Kevin

Thank you for your reply.
As you said, we will try to match the cell subset of dataset with the bulk data.
Also, another question for the same test,
would it be more accurate to define the cell types without being too specific?
For example, I have been dividing CD8 T cells into Tcm, Trm, Tex and so on, but I have the impression that I cannot divide them accurately.
Masaki

Hello, kevin.
I'm very sorry to bother you this year. I am a graduate student and a beginner in the field of single cell. Your scaden's thesis is the first one I have studied. I want to learn about bioinformatics from this yours.
I am studying scaden, I have done the first experiment in your thesis.
Use pbmc data (data6k, data8k, donorA, donorC) to be verified with scaden.
First, I used the pbmc.h5ad data you provided for model training,
Use the data6k_500_samples.txt ， data8k_500_samples.txt， donorA_500_samples.txt   donorC_500_samples.txt provided by you as the prediction file, and compare the prediction results with other methods.
Use scaden to predict the above data6k, data8k, donorA, donorC.samples, and compare with other methods to get good results.
I want to try other experiments in your article, such as pbmc1 and pmbc2 data, pancreas, mouse Brain, etc.
You provide downloads of these training data on the website, and use the following data for model training.
But in addition to the first pbmc experiment, the rest of the data set experiments, I found only the  prediction.txt and labels .txt class files in the data you provided, after model training, can not predict and verify your conclusions.
I would like to ask you to provide me with a prediction document on this data, namely the sample .txt documents, so that  can better study your paper.
This year, due to the lack of data, I can no longer go into further study.
I'm really, really sorry to have been interrupting you. I'd love to learn how your cell anti-convolution is done.
Thank you so much.

Hi Masaki,
sorry for the late reply, I was busy and then on holiday.
Yes definitely, dividing T cells too much will result in poor performance. At some point the difference between the cell types gets lost in all the noise.
Best,
Kevin


Path missing from saw-remote-api example call.

Following issue seen when running SAW lab in gitpod.io.
When running the example command "saw-remote-api http --host <IP_ADDRESS> --port 36691 &", received the error "Missing PATH".

Great catch @Yobaranous! We were missing a /. The full command should be:
saw-remote-api http --host <IP_ADDRESS> --port 36691 / &


Segmentation fault on startup on Linux

Ubuntu 15.10, x86_64
sbobovyc@aspire:~/Embroidermodder/embroidermodder2$ git rev-parse HEAD
b984180b70822ac418d1410c5bd1a513bfb8b791

sbobovyc@aspire:~$ gdb /usr/share/embroidermodder2/embroidermodder2 /tmp/core-embroidermodder-11-1000-1000-958-1453230621
GNU gdb (Ubuntu 7.10-1ubuntu2) 7.10
This GDB was configured as "x86_64-linux-gnu".
Reading symbols from /usr/share/embroidermodder2/embroidermodder2...(no debugging symbols found)...done.

warning: core file may not match specified executable file.
[New LWP 958]
[New LWP 961]
[New LWP 960]
[New LWP 962]
[New LWP 964]
[New LWP 967]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./embroidermodder2'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  strlen () at ../sysdeps/x86_64/strlen.S:106
106	../sysdeps/x86_64/strlen.S: No such file or directory.
[Current thread is 1 (Thread 0x7f5ad15e5780 (LWP 958))]
(gdb) bt
#0  strlen () at ../sysdeps/x86_64/strlen.S:106
#1  0x00007f5acce24a6d in XSetCommand ()
   from /usr/lib/x86_64-linux-gnu/libX11.so.6
#2  0x00007f5acce29070 in XSetWMProperties ()
   from /usr/lib/x86_64-linux-gnu/libX11.so.6
#3  0x00007f5ad01ef3a4 in QWidgetPrivate::create_sys(unsigned long, bool, bool) ()
   from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#4  0x00007f5ad019e8db in QWidget::create(unsigned long, bool, bool) ()
   from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#5  0x00007f5ad019fbab in QWidget::winId() const ()
   from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#6  0x00007f5aa79e8bea in MenuBarAdapter::registerWindow() ()
   from /usr/lib/x86_64-linux-gnu/qt4/plugins/menubar/libappmenu-qt.so
#7  0x00007f5aa79e9687 in AppMenuPlatformMenuBar::createMenuBar() ()
   from /usr/lib/x86_64-linux-gnu/qt4/plugins/menubar/libappmenu-qt.so
#8  0x00007f5ad05b9303 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#9  0x00007f5ad05b93e3 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#10 0x00007f5ad05ba008 in QMenuBar::QMenuBar(QWidget*) ()
   from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#11 0x00007f5ad058aa98 in QMainWindow::menuBar() const ()
   from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#12 0x00000000004eabeb in ?? ()
#13 0x0000000000420c61 in ?? ()
#14 0x000000000041d9b0 in ?? ()
#15 0x00007f5acee52a40 in __libc_start_main (main=0x41d637, argc=1,
    argv=0x7ffe47d01508, init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x7ffe47d014f8) at libc-start.c:289
#16 0x000000000041d509 in ?? ()

Also Segfault on Ubuntu 14.04 and 15.10.

I was looking into this issue, and it appears that it stems from commit 6abbf5a3a692a94bbafc386958967485fae06234 when @DavidPhillipOster was making some modifications for OSX. I think it is occuring because we use the qApp global pointer somewhat extensively in our code and the subclassing of QApplication caused issues with it.

It appears part of the issue may also have been with the menuBars. There is some documentation about OSX tweaks in the QMenuBar documentation.
I just pushed a simple fix upstream for this which shouldn't affect @DavidPhillipOster changes. I'm going to close this issue. If there are still problems, please reopen the issue.

works! Thank you.


Update SDK reference to 1.5

Only focusing on using the latest Pico SDK, we want to update our reference to being the 1.5 SDK.
This is ONLY to update the SDK and fix any breaking changes.
Bluetooth support will be considered in a separate issue.

This has been done - thanks @Fortinbra


Use PosixSpawnProcess instead of ForkExecProcess on platforms without fork

Such as on TruffleRuby, JRuby, etc.
ForkExecProcess does not work at all on these platforms anyway.
PosixSpawnProcess is not thread-safe with regard to the current working directory (https://github.com/oracle/truffleruby/issues/1525#issuecomment-445780033) but it's still better than failing with no fork.
https://github.com/enkessler/childprocess/issues/172 is the proper solution longer-term.

With this the test suite passes on TruffleRuby, except for 4 tests.
I don't feel great about the lack of thread-safety with https://github.com/enkessler/childprocess/blob/c005912c7e13422bc036ec59eaa9dc1570d78d4d/lib/childprocess/unix/posix_spawn_process.rb#L43 but it seems better than just failing.
I would much prefer https://github.com/enkessler/childprocess/pull/175, but this may be easier to integrate shorter-term, and doesn't need a new major version bump.

Dear maintainers of childprocess, could you merge this?

Sorry for the delay. Merged in #191.

Thank you!
Would you be able to make a release including this? :pray:
BTW I'm interested in helping to maintain childprocess.

Would feel more comfortable if we had a working test suite using the efforts from your other PR, which is very close.
Otherwise happy to include the changes in #175 in the next release if we can get all that put together. Thank you.


Custom optimizer

Custom SGD Optimizer Proposal
This PR introduces a custom implementation of the SGD optimizer with a unique step mechanism that is crucial for optimal performance. Please share your feedback and suggestions on the most elegant and efficient way to implement this within the framework.
Here is the YAML configuration file that yields the best results using this custom optimizer:
model:
  nodes:
    - name: EfficientRep
      params:
        variant: "n"
        download_weights: False

    - name: RepPANNeck
      params:
        download_weights: False
      inputs:
        - EfficientRep

    - name: EfficientBBoxHead
      params:
        download_weights: False
      inputs:
        - RepPANNeck

  losses:
    - name: AdaptiveDetectionLoss
      attached_to: EfficientBBoxHead
      params:
        iou_type: "siou"
        n_warmup_epochs: 0
        iou_loss_weight: 20 # Should be 2.5 * accumulate_grad_batches
        class_loss_weight: 8 # Should be 1 * accumulate_grad_batches

  metrics:
    - name: MeanAveragePrecision
      is_main_metric: true
      attached_to: EfficientBBoxHead

  visualizers:
    - name: BBoxVisualizer
      attached_to: EfficientBBoxHead

loader:
  name: LuxonisLoaderTorch

  train_view: train
  val_view: train
  test_view: train

  params:
    dataset_name: cow_finetune
    bucket_storage: "local"

trainer:
  seed: 42
  precision: "16-mixed"
  preprocessing:
    train_image_size: [640, 640]
    keep_aspect_ratio: true
    normalize:
      active: true
      params:
        mean: [0., 0., 0.]
        std: [1, 1, 1]

  skip_last_batch: False
  batch_size: 8
  accumulate_grad_batches: 8
  epochs: &epochs 80
  num_workers: 4
  validation_interval: 10
  num_log_images: 8
  n_sanity_val_steps: 0

  optimizer:
    name: SGD
    apply_custom_lr: True

    params:
      lr: 0.02
      momentum: 0.937
      weight_decay: 0.0005
      dampening: 0.0
      nesterov: True
      warmup_epochs: 3
      warmup_bias_lr: 0.1
      warmup_momentum: 0.8
      lre: 0.0002

  callbacks:
    - name: EMACallback
      params:
        decay: 0.9999
        use_dynamic_decay: True
        decay_tau: 2000

I can create CustomScheduler class:
class CustomScheduler:     def __init__(self, optimizer, cfg_trainer, max_stepnum):
This class will also have a method update_learning_rate(self, current_epoch) to update the learning rate each time the on_after_backward hook is called in PyTorch Lightning.
Similarly, a custom optimizer can be created using the CustomOptimizer class:
class CustomOptimizer:     def __init__(self, model, cfg_optimizer):
This approach will make the optimizer configuration in configure_optimizers cleaner and more modular.


jjo/add sample functions jjo repo

feat: add sample_limit() and sample_random() operators
add HashRandomizer as a non-random :) deterministic [0.0, 0.1] generator, return value as labels.Hash() / MaxUint64
fix comment
s/sample_random/sample_ratio/, adjust docu and tests
no-change small code reorg
TestSample: few sample_ratio() adjustments
TestSample: increase test case #timeseries
Rebase 2023-07-28
Rebase 2023-08-22, adapt to engine_test.go to newer testing interface(s)
Rebase 2023-08-25

mistakenly re-created


Add login/authentication.

This might be a good starting point:
http://brewhouse.io/blog/2014/12/09/authentication-made-simple-in-single-page-angularjs-applications.html

Using https://github.com/t1msh/node-oauth20-provider

Pretty much done.  Can open additional tickets for specific issues.


Print 2D Matrix

Summary

Added  functions in  C++, Java and Python for printing a 2D matrix  implementing a nested loops approach.

Complexity
Time Complexity - O(m*n)
Space Complexity - O(1)
Checklist

[x] Added respective functions in C++, Java and Python
[x] Updated  RoadMap.md
[x] Verified the code was error free

Good work


Node.connect should check for self-connections first

Currently Node.connect first checks if target is itself and then checks if it's projecting to the node already; this should be the other way around
  connect: function (target, weight) {
    if (typeof target.bias !== 'undefined') { // must be a node!
      if (target === this) {
        // Turn on the self connection by setting the weight
        if (this.connections.self.weight !== 0) {
          if (config.warnings) console.warn('This connection already exists!');
        } else {
          this.connections.self.weight = weight || 1;
        }
        connections.push(this.connections.self);
      } else if (this.isProjectingTo(target)) {
        throw new Error('Already projecting a connection to this node!');
      } else {
        let connection = new Connection(this, target, weight);
        target.connections.in.push(connection);
        this.connections.out.push(connection);

        connections.push(connection);
      }
    } else { // should be a group
      for (var i = 0; i < target.nodes.length; i++) {
        let connection = new Connection(this, target.nodes[i], weight);
        target.nodes[i].connections.in.push(connection);
        this.connections.out.push(connection);
        target.connections.in.push(connection);

        connections.push(connection);
      }
    }
    return connections;
  }

Resolved by f619de9875e642e9f86f0502c1c4c66cf664179c


onNodePositionChange doesn't always trigger

Describe the bug
As title
To Reproduce
Had staticGraphWithDragAndDrop set to true
Moved node back and forth a few times, then eventually under some weird dragging condition it does not trigger.
Expected behavior
Always trigger when node position changed
Environment:
"dependencies": {
"d3": "^5.12.0",
"prop-types": "^15.6.2",
"react": "^16.6.3",
"react-contexify": "^4.1.1",
"react-d3-graph": "^2.3.0",
"react-dom": "^16.6.3",
"react-select": "^3.0.8",
"semantic-ui-react": "^0.88.1"
},
As I was shuffling my way through the code, I noticed this part that the deltas somehow can be 0

To verify things were changing and moving, I console logged "draggedNode" during "_onDragMove" and could definitely confirm the coordinates being updated as it was being dragged.
Logging the drag move coordinates out:
Situation where it does NOT work:

Situation where it does work:

From repeating multiple times, the one observation I see is that when it doesn't work is that the last 3 coordinates during a drag move are the same.
Whereas when it does work it is just the last two coordinates that are the same, and does work.
Is there an underlying purpose on checking this delta, or could we safely remove that validation?

Looking into it now, I really don't see a problem to remove the delta validation. It will be way more transparent to the client; even if the coordinates don't change it is still cleaner to execute the callback onNodePositionChange 🙂 Feel free to submit a PR

Fixed with https://github.com/danielcaldas/react-d3-graph/pull/266


Can not preview latest Typst version (v0.11.0)

Describe the bug
On March 15, 2024, Typst v0.11.0 was released, including many necessary changes to the table function, as well as introducing packages that are a huge improvement of QOL when using Typst.
Be that as it may, it is impossible to use any v0.11.0 package and still be able to use typst-preview given that the following error is raised:
error: package requires typst 0.11.0 or newer (current version is 0.10.0)
  ┌─ /[...]/main.typ:2:8
  │
2 │ #import "@preview/drafting:0.2.0": *
  │         ^^^^^^^^^^^^^^^^^^^^^^^^^

To Reproduce
Steps to reproduce the behavior (Library test):

Open a typst document.
Import any Typst package that requires v0.11.0
The error is raised.

Expected behavior
Preview the document with the new package's functionality.
Package/Software version:
VSCode version (Help → About):
Version: 1.87.2
Commit: 863d2581ecda6849923a2118d93a088b0745d9d6
Date: 2024-03-08T15:20:57.520Z (1 wk ago)
Electron: 27.3.2
ElectronBuildId: 26836302
Chromium: 118.0.5993.159
Node.js: 18.17.1
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 23.1.0

typst-preview extension version: v0.10.10
Logs:
typst-preview server log(Output Panel -> typst-preview):
[2024-03-17T17:46:52Z DEBUG typst_ts_compiler::service::compile] CompileActor: memory event incoming
[2024-03-17T17:46:52Z DEBUG typst_ts_compiler::service::compile] CompileActor: fs event incoming Some(Update(FileChangeSet { removes: [], inserts: [("/[...]/main.typ", FileSnapshot { mtime: SystemTime { tv_sec:<PHONE_NUMBER>, tv_nsec: 697234816 }, content: FileContent { len: 593 } })] }))
[2024-03-17T17:46:52Z DEBUG typst_ts_compiler::service::compile] CompileActor: fs event incoming Some(UpstreamUpdate { changeset: FileChangeSet { removes: [], inserts: [] }, upstream_event: Some(UpstreamUpdateEvent { invalidates: ["/[...]/main.typ"], opaque: Any { .. } }) })
[2024-03-17T17:46:52Z INFO  typst_ts_compiler::service::diag::console] /main.typ: compiling ...

[2024-03-17T17:46:52Z INFO  typst_ts_compiler::service::diag::console] /main.typ: Compilation failed after 222µs

error: package requires typst 0.11.0 or newer (current version is 0.10.0)
  ┌─ /[...]/main.typ:2:8
  │
2 │ #import "@preview/drafting:0.2.0": *
  │         ^^^^^^^^^^^^^^^^^^^^^^^^^

Additional context
First, I'd like to thank you for your amazing work in this extension which has done wonders for me and allowed me to improve my workflow a lot, and I truly appreciate the effort you've put into developing such an amazing tool.
I know this is probably due to the latest version of Typst (v0.11.0) not being fully supported yet, but, I was wondering, is there any possible workaround or alternative approach that would allow me to use Typst v0.11.0 and still benefit from the preview functionality?
In my current project, using the latest v0.11.0 features is crucial due to the specific requirements of a somewhat important document I'm working on.
Regardless, thank you and sorry in advance.

it will be supported today

Thank you!


fixing a string

fixing the string for confirmation dialog on Publish survey and some quotes

You might also want to change the wording for SURVEY_CONFIRM_CLOSE as that has the same past tense/future tense issue.


dynmap does not show phome and warp

The current version is 4.3.2, I updated from 3.x and found that no teleportation points are displayed on the dynmap.
map_hook:
  # Display public homes/warps on your web map (supports Dynmap and BlueMap)
  enabled: true
  show_public_homes: true
  show_warps: true

Can you try updating your Dynmap version to the very latest? The dynmap hook uses fairly new Dynmap API hook features

My dynmap version is 3.5-873
This is the latest released version

Check startup logs. Does HuskHomes log anything about the hook being established?

[16:46:13] [Server thread/INFO]: [HuskHomes] Enabling HuskHomes v4.3.2
[16:46:13] [Server thread/INFO]: [HuskHomes] Initializing plugin config & locale files...
[16:46:13] [Server thread/INFO]: [HuskHomes] Successfully initialized plugin config & locale files
[16:46:13] [Server thread/INFO]: [HuskHomes] Initializing SQLite database connection...
[16:46:13] [Server thread/INFO]: [HuskHomes] Successfully initialized SQLite database connection
[16:46:13] [Server thread/INFO]: [HuskHomes] Initializing hooks...
[16:46:13] [Server thread/INFO]: [PlaceholderAPI] Successfully registered expansion: huskhomes [4.3.2]
[16:46:13] [Server thread/INFO]: [HuskHomes] Registered 3 plugin hooks: Dynmap, PlaceholderAPI, EssentialsX Importer
[16:46:13] [Server thread/INFO]: [HuskHomes] Successfully initialized hooks
[16:46:13] [Server thread/INFO]: [HuskHomes] Initializing events...
[16:46:13] [Server thread/INFO]: [HuskHomes] Successfully initialized events
[16:46:13] [Server thread/INFO]: [HuskHomes] Initializing commands...
[16:46:13] [Server thread/INFO]: [HuskHomes] Successfully initialized commands
[16:46:13] [Server thread/INFO]: [HuskHomes] Initializing metrics...
[16:46:13] [Server thread/INFO]: [HuskHomes] Successfully initialized metrics

On the dynamic map web interface, are two marker sets created -- one for "Public Homes" and one for "Warps"?

On the dynamic map web interface, are two marker sets created -- one for "Public Homes" and one for "Warps"?

yes
I just found out that the newly created phome can be displayed normally, but the others are not

Existing homes / warps aren't being added, then? Alright. Is this also the case with warps, where new ones are added but old ones not populated?

The warp may not be displayed normally.

another strange phenomenon

ooh, okay, hm, just realised something -- could you try with warps/homes that only utilise Latin characters? (a-zA-Z0-9)

Yes, I use test as the name for my tests

I found a different server_name in the huskhomes_position_data table in the database. I haven't tried to fix the data, do you think if they are different, it will affect the display on Dynmap?

It'll only display homes/warps on the server they're on -- if there's a mismatch, that's something you need to sort out


discord: various updates

Description of changes
The update script failed for me, so I updated it to use the api endpoint instead.

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Superseeds https://github.com/NixOS/nixpkgs/pull/344076

Why did discord-development get downgraded from 0.0.28 to 0.0.27?

Here's an updated discord-update.sh which makes the Discord updates commit and starts a rebase to squash the changes in to it.
#!/usr/bin/env bash

git commit --allow-empty -m 'Discord updates'
for d in discord discord-ptb discord-canary discord-development pkgsCross.aarch64-darwin.discord pkgsCross.aarch64-darwin.discord-ptb pkgsCross.aarch64-darwin.discord-canary pkgsCross.aarch64-darwin.discord-development; do
    nix-shell maintainers/scripts/update.nix --argstr commit true --argstr package "$d"
done
git rebase -i HEAD~"$(git log master..HEAD --oneline | wc -l)"

Superseded by https://github.com/NixOS/nixpkgs/pull/347886


App architecture and some configs

Please use a feature folder to house the nested primary folders. I.e. each feature should include folders for the different layers


[Popover] Can it support VirtualElement like `Popper?

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Summary 💡
Popper component inherits the feature of using a VirtualElement as it's anchorEl, it provides a convenient way to set the position value if we don't want it relatives to a real element, for example I want to show the Popover below a selected Range.
After reading the source code, I know that I can create an object with a nodeType property and a getBoundingClientRect method, But I'm afraid that it's not safe to use the component in a hack way.
Shall we make the Popover component supports VirtualElement natively and add it into document?
Examples 🌈
No response
Motivation 🔦
No response

The request makes sense to me 👍 It is documented on both popper and Floating UI's documentation (we are likely to migrate to it in the future). Here are the benchmarks:

https://popper.js.org/react-popper/v2/virtual-elements/
https://floating-ui.com/docs/virtual-elements

Would you like to create a PR for it? :)

I will start working on this

I took a look at the issue once again. I am not up for adding this logic inside the library, but we can add a guide for how to do it. The recommendation would be similar to https://mui.com/material-ui/react-popper/#virtual-element, we should specify an object with the props that the MUI Popover component expects. @DiegoAndai would you like to try this in a codesandbox and see if it works?


odo link Doesn't Require odo push

/kind enhancement
Unlike other commands that have the ability to alter what's deployed in a project, odo link simply performs linking as soon as you run the command.
It seems a bit odd to have this behavior that is not consistent with other odo commands. I am wondering if it makes sense to add the need to run odo push as part of linking or if there's reasoning behind excluding it from odo link?
Which functionality do you think we should update/improve?
Require odo push after an odo link.
Why is this needed?
To keep the experience of using odo commands the same as with other commands that alter the state of a project. Users might be caught off guard that odo link runs instantly as opposed to a create command.

/kind feature
we need to update the template to say above :/

Adding to this:
It would be nice if linking is allowed when the application has not yet been pushed. This is currently not possible.
For example, if your application uses a database, currently you need to deploy the application, and after that link it to the database.

We have to create a list of Links in the odo local config. The essential information needed here are the 1st component and other component/service info ( component, app and project name ).
The current component present in the local config can be assumed as the 1st component so we need to only store the other component/service's info

Scenario:

I clone a repository, for example, wildwest-frontend that  that uses odo (has .odo/config.yaml) and there is a Link in the config that points to wildwest-backend
now I run odo push in  wildwest-frontend directory, but wildwest-backend is not deployed yet.

What should happen?

we show a warning that the linked component isn't running so we are ignoring the link. and when the user creates the wildwest-backend. and then rerun the odo push to create the link.
we need the links to be present in the local config. The purpose of local config is to allow someone to recreate the same component environment with least amount of information.
This could be useful when we consider storing service information in local config and then to re-create a database backed component a developer just needs to do odo push.

we show a warning that the linked component isn't running so we are ignoring the link. and when the user creates the wildwest-backend. and then rerun the odo push to create the link.

I think a simple error/warning message would be enough.

we can store the links in config as a list of structs containing this info
LinksWith:
- name: <component/service name>
  app: <application name>
  env-prefix: <env prefix> # as described in https://github.com/openshift/odo/issues/2369
  port: <port to link with>
...


For each bundle image, construct the mapping data of original related
images to rebuilt images.

And add new column bundle_pullspec_overrides to ArtifactBuild model for
later use to store pullspec overrides data.
JIRA: CLOUDWF-2902

Hi @mprahl could you help to review this?

Hi @mprahl could you help to review this?

@qixiang I think this PR could be simplified in general by starting from the original code and add a mapping of original_nvr digest to rebuilt_nvr digest (like you did) and then refactor _filter_bundles_by_pinned_related_images so that it returns a dictionary that has a mapping of bundle NVR to image.operator_manifests.related_images.pullspecs (from the Brew build extra data).
From there, loop through all the items in the new dictionary just mentioned and loop through each pullspecs list (i.e. the value of the dictionary item). If one of the new fields contains a pullspec with the digest of an original_nvr, replace just the digest with the new digest of the rebuilt_nvr.
The dictionary now contain the pullspec replacement metadata that OSBS needs.

@qixiang I think this PR could be simplified in general by starting from the original code and add a mapping of original_nvr digest to rebuilt_nvr digest (like you did) and then refactor _filter_bundles_by_pinned_related_images so that it returns a dictionary that has a mapping of bundle NVR to image.operator_manifests.related_images.pullspecs (from the Brew build extra data).
From there, loop through all the items in the new dictionary just mentioned and loop through each pullspecs list (i.e. the value of the dictionary item). If one of the new fields contains a pullspec with the digest of an original_nvr, replace just the digest with the new digest of the rebuilt_nvr.
The dictionary now contain the pullspec replacement metadata that OSBS needs.

Hi @mprahl @apaplaus I refactored the code in this handler and pyxis module, and updated the patch, please help to review this.
The APIs are refactored because they return a overall list of images or NVRs without the mapping of digest to images, now we get the bundles which the images in advisory connect to first, then for each bundle, check auto rebuild tag and osbs pinning, finally for each bundle we're going to rebuild, update the digest in pullspec (new) to digest of rebuilt images.
And other changes:

get_images_by_digests -> get_images_by_digest:

Instead of getting a overall list of images, we need to know the mapping of digest to images, so refactor it to call with a single digest.
manifest_list_digest is used in bundle's related images, but for bundles, manifest_schema2_digest is used, so we need to get image by manifest_list_digest or manifest_schema2_digest.

Get brew extra metadata: buildinfo.get("build", {}).get("extra", {}) -> buildinfo.get("extra", {}), there is no build key.
Get repository auto rebuild tags via endpoint repositories/registry/{registry}/repository/{repository} instead of repositories.

Hi @mprahl @apaplaus I refactored the code in this handler and pyxis module, and updated the patch, please help to review this.
The APIs are refactored because they return a overall list of images or NVRs without the mapping of digest to images, now we get the bundles which the images in advisory connect to first, then for each bundle, check auto rebuild tag and osbs pinning, finally for each bundle we're going to rebuild, update the digest in pullspec (new) to digest of rebuilt images.
And other changes:

get_images_by_digests -> get_images_by_digest:

Instead of getting a overall list of images, we need to know the mapping of digest to images, so refactor it to call with a single digest.
manifest_list_digest is used in bundle's related images, but for bundles, manifest_schema2_digest is used, so we need to get image by manifest_list_digest or manifest_schema2_digest.

Get brew extra metadata: buildinfo.get("build", {}).get("extra", {}) -> buildinfo.get("extra", {}), there is no build key.
Get repository auto rebuild tags via endpoint repositories/registry/{registry}/repository/{repository} instead of repositories.

@qixiang this is looking really good. Just a few comments to address. Afterwards I'll review the code one more time and review the tests.

@qixiang this is looking really good. Just a few comments to address. Afterwards I'll review the code one more time and review the tests.

Thank you @mprahl , all comments have been addressed in updated PR.

Thank you @mprahl , all comments have been addressed in updated PR.


CyberGlow - High GPU and Battery Consumption

I don't know if this is the proper way to address this issue, but since I'm a huge fan of this theme overall, I thought I'd give it a try and post this here, I had this theme installed since couple of days on my PC, today I decided to apply it on my Laptop, Ran Obsidian as usual and installed on my Lenovo ThinkPad that I use for work mainly.
The moment I applied the theme while still on the settings window too, my laptop fans fired up and sounded awfully loud, I instantly opened my task manager on windows, to see that my GPU consumption is around 80% from obsidian alone, in the background without typing a word on it!
Technically my laptop has an integrated (Intel Xe Graphics) / 12th Gen. i7 CPU, which is more than enough to do whatever I do, but that's probably why I didn't notice this issue at all on my desktop back home, I switched to the default theme, and all came back fine.
Please check the screenshot from my task manager attached to this.
Expected behavior
I really hope there can be a work around this to use my favorite theme without draining my laptop's battery in less than 3 minutes.
Desktop (please complete the following information):

OS: Windows 11 Pro 23H2
Obsidian Version 1.5.12
CyberGlow Version 1.3.2

Hey there, did you managed to solve the issue? I cant use the theme on my phone because of this.

You can try to fix the issue by disabling custom background image, which can help.
Ive noticed this issue myself and plan on reconstructing my theme to check what exactly causes this issue, though Im quite certain its custom background image setting that causes the lag. Going forward I will most likely disable that setting by default if Style Settings is installed.

I am currently looking through the code and monitoring activity in task manager, I'll put out an update that addresses this soon.

The code I found that was causing excess power draw on idle was a small animation. With it enabled saw task manager CPU usages on my laptop spike from near 0% to around 5% or so. This animation code will be disabled and have an option to enable it in style settings with a warning note to it.
Hunting around for any other code that could be a contributor as well.

@usualstuff  @OdiJordan  Just released a massive update with lots of changes and improvements, I have been carefully monitoring the task manager, and I am happy to report that this version uses same number of resources as the vanilla theme on idle thus it should be easier on your system resources and battery now.
Please give it a try and let me know what you think now

@ArtexJay Absolutely wonderful job! I checked my PC and phone - no battery drain issues.
Thank you so much, big fan of your theme!

@ArtexJay Absolutely wonderful job! I checked my PC and phone - no battery drain issues.
Thank you so much, big fan of your theme!

Yaaaay, thats great to hear! And very glad you like my theme, it means a lot.


feat: Support for capacitor version 6

Is your feature request related to a problem? Please describe:
Are there any plans to release a version to be compatible with capacitor version 6.0.0? Currently, when installing this library,
alonside with Capacitor v.6.0.0, npm throws an error.

There is a pull request #86 to upgrade to Capacitor 6.


Feature/408 bloat

Closes #408

Coverage remained the same at 88.739% when pulling 7bf70c1b440700198b83dc4beb53e3c28e3404bd on feature/408-bloat into 30df8da3a21ca3a99e8f8f4aede5fc780f01ca4a on master.

Coverage remained the same at 88.739% when pulling 24818658f888c724b130991b16552e7e812fddf4 on feature/408-bloat into 30df8da3a21ca3a99e8f8f4aede5fc780f01ca4a on master.


fix build target, adds arm support

Pull Request check list

[ ] Proper tests/regressions included?
[ ] Documentation updated?

Affected functionality

->make build now generates a binary for galadriel server and harvester.
->removed a restriction in the makefile that wouldn't allow for arm builds.
Description of change

Regarding support for arm builds, we can build SPIRE for arms so I thought this could be an alternative for developing natively on new macs, as the other ways around (simulation and running externally) are quite sub-optimal. With that said, I'd love to discuss more about this if anyone has thoughts.
Signed-off-by: Juliano Fantozzi<EMAIL_ADDRESS>

Rebased and added a target to create the bin  directory in case it doesn't exist

Opsie, I missed out an unsigned commit 🛌


[Merged by Bors] - doc(Topology): fix more mathlib3 names in doc comments

Auto-generated using a script, with manual fix-ups.

Thanks!
bors r+

Thank you for the fast review.


Broken emojis in email

We should try to fix this soon, before the 1.5 release.

Will work on this. What all do I need to look into? @timabbott

This is kinda puzzling; the underlying link on chat.zulip.org works fine, but Google's cache of it does not.

I think I've figured this out; testing a fix now.

Yep, that worked.  Thanks @akashnimare for the bug report!


VM doesn't introduce function type on class from abstract call member.

Example:
typedef int Adder(int a, int b);
class Mock {
  noSuchMethod(i) => ...l
}
class MockAdder extends Mock {
  int call(int a, int b);
}
main() {
  Adder adder = new MockAdder();  // Checked-mode failure in VM.
}

The code runs in dart2js and has no warnings from the analyzer.
The type MockAdder should be a subtype of Function and the function type (int,int)->int, but in the VM, it isn't.
Adding a call member is the only way to add a function type to a class (you can't implement Adder).
The workaround is to add a concrete function: int call(int a, int b) => super(a, b); instead, but that shouldn't be necessary.

@gbracha Here is a question for you: Does it really count as implementing a Function if the call method is abstract?

Implementing a function is defined in terms of the interface of the class, not the implementation. Whether a method is abstract or not does not change how it affects the class' interface.
If you define an abstract type with a call method, a variable of that type must be treatable as a function:
typedef int Func(int _);
class C { int call(int x) => x * 2; }  // Implements Function and int->int.
abstract class C2 implements C {}  // Implements C, so also implement Function and int->int
class C3 extends C2 { noSuchMethod(i) => 42; }  // Extends C2, so implements Function and int->int.
C foo () => new C3();
main() {
   C c = foo();
   Func f = c;  // Must not fail in checked mode.
}

See also:

It is a static warning if a concrete class implements Function and does not have a concrete method named call unless that class has an implementation of noSuchMethod() distinct from the one declared in class Object.

That at least suggests that you can be a function without a concrete call method.


where can download the 'vit_base_patch8_384.pth'

thank you for your excellent work, I want to know where can download the 'vit_base_patch8_384.pth', thanks again!

Are you solve the problem?

Are you solve the problem?

no.

I find in the paper says that the 'vit_base_patch8_384' model just means the vit_base_patch8_224 model.

I find in the paper says that the 'vit_base_patch8_384' model just means the vit_base_patch8_224 model.

Thanks for your reply, I am doing anothor project, which isn't associated with this repo. B.t.w, if so, that doesn't make sense.


Replace fc::optional with std::optional

Jira:  https://blockone.atlassian.net/browse/EPE-17
Jira issue has links to benchmarks describing performance improvement of std::optional over fc::optional.

I need to look at the buildkite failures.  They are showing more places where I need to migrate to std::optional yet everything builds successfully on my MacOS clang setup.

Closing to recreate a new PR to see if it fixes the buildkite failures.

This PR should be ready for review now.
I'm not quite sure what boxes to check for this though.

This PR is ready for final review.

@larryk85 Updated

Is the abieos changes expected? Can't tell because of the force-push.

Replay completed successfully.
https://buildkite.com/EOSIO/auto-eosio-full-replay-test/builds/245#_
develop has been merged.
Please take another look.

@larryk85 @heifner @allenhan2 I think this is ready to go.  Please take another look.


Enhancing the twindle-web Landing page

We are going make twindle-web look more exciting & user friendly using just Html, CSS & a little bit of JavaScript

Right now our initial design looks like this:

We are taking inspiration from Notion website. Do check it out

Tasks

[x] Make the background look minimal & cool like Notion. Use this site as a reference for background: HappyHues

[x] Make the footer's background transparent

[x] Make use of CSS variables in the :root pseudo class for globally assigning properties in the CSS

PS: If you want to add anything feel free to mention in this issue. When we contribute together we make a great Product
Edit: Now our site look like this totally different from the initial design:

I can give this a try if I can have a copy of our Figma design by Joel. Could someone point me in the right direction if that is the way we want to take this?

The design looks good. Is this the one we are going to implement or is there any other?

@frankiefab100 We are making some modifications in the design & making it better If you feel like contributing contact me, @UnevenCoder or @vijaya-bhaskar for more information.
Just follow this issue for the same too.

One recommendation from my side. I've worked with CSS variables theming, and ultimately, we're gonna introduce that sometime, so my recommendation is to add the CSS variables to the body element, with classes like light, dark.
Demo: My site https://puruvj.dev/hello Click on the theming button on top right to see the effect
Source: https://github.com/PuruVJ/puruvjdev2/blob/main/static/css/themes.css

ToDo Tasks
Priority given to the Task in the Descending order
For now, We need to focus on these tasks & along the way we can update the tasks accordingly

[ ] Testimonials - (Ameen & Titi)
[ ] Illustrations needed - (Everybody)
[ ] Email Signup goes to Excel - (Saurabh)
[ ] Fonts to be adjusted to be uniform - (Joel, Titi) {CSS Variables}
[ ] Better footer section - (Vijaya & Akshay)
[ ] Responsive design (Mobile)
[ ] Team Page (Separate than landing page) - (Ameen & Akshay)

For Illustrations see these sites:

Undraw
FreePik
ls.graphics
Lotte Files

PS: For reference see the illustration Animated GIF

Important for Everyone

Make use of Flex in the sections.
Use rem unit in fonts, margin, padding & avoid using pixel (px) in it.
Use CSS variables to assign a value in the :root selector to avoid repetition.

Scrapping Twindle Web for now

Scrapping Twindle Web for now


ESM element for treatments undefined

In order to interpret a measurement correctly, it is crucial to know if any treatments were applied at the time of measurement, and if so, which treatments and over what period of time. Currently, treatments are insufficiently represented in the MPD schema (Issue #16) and an EMS element for treatments has not yet been defined.
The counterpart of an element for Treatments of mice would be the MedicalAction element in the GA4GH Phenopacket schema. Since the MedicalAction element is focused on modelling patients in a clinical context, it is only partially suitable for modelling experimental mouse data. I therefore propose to introduce a new element Treatments into the EMS. A message for a high-fat high sucrose diet applied from 4 to 26 weeks of life might look like this:
treatments:
- Diet:
   ageRange:
     start:
       iso8601duration: "P4W"
     end:
       iso8601duration: "P26W"
   type:
     id: "ONS:1000041" # Ontology for Nutritional Studies (ONS)
     label: "High fat diet" # No term for 'High fat high sucrose diet' in ONS
   schedule:
   - quantity:
       unit:
         id: "UO_0000021"
         label: "gram"
       value: 2.9072 # Average food intake per day
     frequency:
       id: "ONS:1000059"
       label: "Daily food intake"
   - composition:
       fat: 23.2
       carbohydrate: 47.6
       protein: 17.3
       kCalPerG: 4.7

For other types of Treatments, such as drug administration, other sub-elements could be introduced alongside Diet, such as Agent, where specific information such as the name of the agent and the route of administration could be documented.
I would like to point out that the data on treatments in MPD is represented in an unstructured form, which makes it impossible to automatically generate such messages as shown above (Issue #16). However, there is a wide range of well-documented treatments in the MPD, which may be helpful in modeling an adequate schema.

I agree with the overall strategy as sketched out above. Probably it would be good to have more detail for composition. In protobuf, the floats always will be there with a default value of 0.0, I think, and so it is hard to distinguish between zero and not-available (both would be shown as 0.0).
Maybe it would be good to get some of the data from MPD to set up a test case for populating this element. It should be possible to record this kind of information in a structured way moving forward, although it will be very difficult to parse this reliably from legacy data...

It could be worth looking at the XCO from RGD. This has many treatment terms including a large number for different diets (see for example http://purl.obolibrary.org/obo/XCO_0000014)


Use entry points for talker plugins.

May wish to add more to the plugin list (load() the ep for a friendly display name etc. from a class var).
Will probably need to pass the list into the settings window so creating a self.plugins from get_talkers in main.

So right now if get_comic_talker is called on start to get 'comicvine' and then it is called again to load 'mangaupdates' it goes back to start and re-parses and re-loads every module it needs to load, it would be better to return a class/tuple/list/etc that contains all of the plugins already loaded

So right now if get_comic_talker is called on start to get 'comicvine' and then it is called again to load 'mangaupdates' it goes back to start and re-parses and re-loads every module it needs to load, it would be better to return a class/tuple/list/etc that contains all of the plugins already loaded

As there is only one talker atm I didn't want to muddy the waters. https://github.com/comictagger/comictagger/pull/419 does load everything into a self.plugins (although it still has the problem mentioned). I was trying to keep things separate and so all this is really, is adding the ability to load plugins through entry points.

I'm not sure on the best way to handle possible errors when loading the talker, see https://github.com/comictagger/comictagger/pull/418/commits/56577f7cea871317bf35c5841297c6113ff21a82
I'm wonder if having a loader in talkerapi might be the better way and return the object. Something like there was before:
def get_comic_talker(source_name: str, plugins: dict[str, type[ComicTalker], params: dict[str, Any]) -> ComicTalker:
    """Returns talker object"""
    if source_name not in plugins:
        raise TalkerError(source=source_name, code=4, desc="The talker does not exist")

    try:
        return plugins[source_name](params)
    except:
        raise TalkerError(source=source_name, code=4, desc="The talker failed to load")

And in main:
     try:
        talker_api = ct_api.get_comic_talker(all_the_params)

Would that be a better approach? I'm also thinking ahead for when switching talkers will be required, having a function to call would be better.

Error handling ends up being about the same no matter what.
From what I see in effect you are just wrapping the exception for you to catch it again. I don't see any change in the use of it.
In main.py moving all of the Talker loading into another function would be nice eg def load_talker(self):

The load_talker being in comictalkerapi makes more sense later and other things will change too so it can re-evaluated then. Put it in main for now.


Do we ever actually set the AccessAttempt.trusted flag?

We check it in lots of places but I don't se it actually being set anywhere. Can someone point me to a place where we do that? I expected it in signals.log_user_logged_in but that's only AccessLog.trusted

I think we should remove it.

New patch that removes the flag is in the development branch and will be part of the new major release after 4.5.0.