How to await a WizardScene?

Hi, I'm sorry if I've been almost a nightmare for you lately, but I really need a helping hand. Unfortunately, there is not much in the official TelegrafJS documentation, and the assistance leaves much to be desired. I ask you because you are my last hope.
Essentially I'm using the WizardScene to handle the user input and validate it, if the input is valid then I will ask another question. The WizardScene implementation is really easy, I also answered on StackOverflow 'cause other people had that problem, check here.
I added all the WizardScene inside a middleware, so in my entry point I have this:
const Telegraf = require('telegraf');
const bot = new Telegraf(process.env.BOT_TOKEN);
require('./config/middlewares')(bot);
bot.startPolling();

and middlewares contains the following implementation:
const WizardScene = require('telegraf/scenes/wizard');
const Stage = require('telegraf/stage');
const projectController = require('../controllers/project.controller');

module.exports = function (bot) {

const projectNameWizard = new WizardScene('projectName-wizard',
    (ctx) => {
        ctx.reply(ctx.i18n.t('projectName'));
        ctx.scene.session.project = {};

        //Project updating
        ctx.scene.session.project.oldName = ctx.match[1];

        //Keep customer reference
        ctx.scene.session.project.customerId = ctx.update.callback_query.from.id;
        return ctx.wizard.next();
    },
    async (ctx) => {

        //Get the name of the projec
        let oldPrName = ctx.scene.session.project.oldName;
        let newPrName = ctx.message.text;

        //Convalidate project
        if (ctx.message.text.length < 1 || ctx.message.text.length > 12) {
            return ctx.reply(ctx.i18n.t('invalidProjectName', { "characters": 12 }));
        }
        ctx.scene.session.project.name = ctx.message.text;

        //Update the project fields
        await projectController.SaveProject(ctx.scene.session.project, ctx.update.message.from);
        let pr = await projectController.DisplayProjectDetails(ctx, newPrName);

        ctx.scene.leave();

        //Project was updated
        if (oldPrName !== undefined) {
            ctx.reply(ctx.i18n.t('projectUpdated'));
        }

        return pr;
    }
);

const stage = new Stage([projectNameWizard]);
stage.command('cancel', (ctx) => {
    ctx.reply(ctx.i18n.t('operationCanc'));
    return ctx.scene.leave();
});
bot.use(stage.middleware())
}

now, I enter in this wizard by clicking on a button menu:
const replyMiddleware = project.replyMenuMiddleware();
projectEdit.simpleButton(ctx => ctx.i18n.t('editName'), 'EDIT_PR_NAME', {
    doFunc: async ctx => {
        await ctx.scene.enter('projectName-wizard');
        await replyMiddleware.setSpecific(ctx, "PROJECT_HANDLER:PROJECTS-" + ctx.match[1]);
    },
});

essentially the logic would be reopen the menu project for edit the project (at least until you answer here).
The problem is that I can't wait the WizardScene, infact the menu is opened immediately after ctx.scene.enter.
I can't send any parameter to that scene 'cause the SceneWizard need to be registered before start the bot.
I feel like I have both arms tied, a little due to lack of experience with these two libraries, partly because there are not enough examples.
Could you suggest me something to handle that?
Kind regards.

I personally decided against using the SceneWizard as it introduces state in the running logic. Restarting the bot will result in lost state. This is not the case with telegraf-inline-menu which is one of the reasons why I started using it for my projects.
As a result I have little to none experience with the SceneWizard. Asking people at the appropriate places / repos will be more helpful to you.
I may have answers to things I do but I don't have answer to things unrelated to the things I do. ;)
I hope others can help you with your problem at more appropriate places :)

Essentially I'm using the WizardScene to handle the user input and validate it, if the input is valid then I will ask another question.

Handling user input and validate it is something also possible with this library. I explained an example in #12 how I do it currently. Maybe try that if your current approach is not successful. :)


fix: clear tmp files from previous run if exist before copy cni binaries again

Please provide a description of this PR:
Fix for https://github.com/istio/istio/issues/54311

/ok-to-test

@mkralik3: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ambient_istio
f3b94dfafd70645f9c5267f7204f3bf4fd66d2e5
link
true
/test integ-ambient

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/test integ-ambient

@mkralik3: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ambient_istio
f3b94dfafd70645f9c5267f7204f3bf4fd66d2e5
link
true
/test integ-ambient

integ-security-multicluster_istio
f3b94dfafd70645f9c5267f7204f3bf4fd66d2e5
link
true
/test integ-security-multicluster

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@mkralik3: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-multicluster_istio
f3b94dfafd70645f9c5267f7204f3bf4fd66d2e5
link
true
/test integ-security-multicluster

unit-tests-arm64_istio
eb7e2093c0830b4e166ab077e71d4a8e7f8f6460
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/test unit-tests-arm64


Updated nightly versions to CSM 1.12 image tags

Description

Updated nightly versions to CSM 1.12 image tags in OperatorConfig folder

GitHub Issues
List the GitHub issues impacted by this PR:

GitHub Issue #

https://github.com/dell/csm/issues/1435

Checklist:

[x] I have performed a self-review of my own code to ensure there are no formatting, vetting, linting, or security issues
[x] I have verified that new and existing unit tests pass locally with my changes
[x] I have not allowed coverage numbers to degenerate
[x] I have maintained at least 90% code coverage
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[x] I have maintained backward compatibility

How Has This Been Tested?

Made sure all the unit tests are passing

some of the images referenced in this PR aren't pushed yet; IMO it would make more sense to wait for every component to release first, and then we can run some e2e on this branch before merging this PR and releasing operator


Vanishing Bottom Navigation tabs

Steps to reproduce

Open the app.
Open any book in category
Select continue reading.
The bottom navigation bar which shows options like Library, Updates, History vanishes after returning to library screen.

Expected behavior
The bottom navigation bar should be present.
Actual behavior
The bottom navigation bar is absent.
LNReader version
1.1.19
Android version
Android 15
Device
Google pixel 8
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with a source, I should be opening an issue in the sources repository.
[ ] I have updated the app to version 2.0.0.
[X] I will fill out all of the requested information in this form.

I'm not updating to 2.0 as I'm waiting for stable release, and the issue fixes itself when the app is restarted

I am unable to reproduce this in v2.0.0 beta. Significant changes have been made since v1.1.19, and the next stable update will be based on v2.0.0. Closing this.


Character Conflict Tool Error when Filling Fields

Create two characters, Bob and Alice
Create an arc for a character
Open the Character Conflict Tool
Fill in Central Conflict, Desire, Psychological Weakness
What I expect to happen:
Fill in Moral Weakness
What actually happens:
When clicking on the Moral Weakness field or around it, the following error comes up:
java.lang.NullPointerException
at com.soyle.stories.usecase.character.arc.section.changeCharacterArcSectionValue.ChangeCharacterMoralWeaknessUseCase.invoke(ChangeCharacterMoralWeaknessUseCase.kt:30)
at com.soyle.stories.characterarc.changeSectionValue.ChangeSectionValueControllerImpl$setMoralWeakness$1.invokeSuspend(ChangeSectionValueControllerImpl.kt:46)
at com.soyle.stories.characterarc.changeSectionValue.ChangeSectionValueControllerImpl$setMoralWeakness$1.invoke(ChangeSectionValueControllerImpl.kt)
at com.soyle.stories.characterarc.changeSectionValue.ChangeSectionValueControllerImpl$setMoralWeakness$1.invoke(ChangeSectionValueControllerImpl.kt)
at com.soyle.stories.common.AsyncThreadTransformer$async$1$1.invokeSuspend(ThreadTransformerImpl.kt:12)
at com.soyle.stories.common.AsyncThreadTransformer$async$1$1.invoke(ThreadTransformerImpl.kt)
at com.soyle.stories.common.AsyncThreadTransformer$async$1$1.invoke(ThreadTransformerImpl.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:102)
at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:148)
at kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)
at com.soyle.stories.common.AsyncThreadTransformer$async$1.invokeSuspend(ThreadTransformerImpl.kt:11)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

@ryanreso1993 please verify with new release

@ryanreso1993 please verify with new release

I was unable to reproduce #88 as I can't find the Character Conflict tool where it lists the Central Conflict, Desire, Psychological Weakness, etc.

You can find it in the theme list now

@ryanreso1993 giving this one a bump.  Can't finalize v0.13.0 until these are all confirmed fixed.

Confirmed half fixed. Repeat these steps to reproduce a similar error:

Create Project
Create Character
Create Character arc for said cahracter
Open the Themes tab
Open Examine Character Conflict for the arc
Set perspective character as created character
Write in Moral Weakness
Write in Desire
Click in Psychological Weakness

What I expect: The text in Moral Weakness stays.
What actually happens: The text in Moral Weakness disappears.

@ryanreso1993 try now

Confirmed fixed v0.13.0 Pre-Release 3! 🥳


v1 Training time + training a 44Khz model on Universal VCTK+Blizzard2011+Clipper Datasets

What's a rough estimate for training time of the 22Khz v1 pretrained model provided here?

I'm currently training a 44Khz config.
At the moment I'm training using 3 GPU's, batch_size=24 and segment_size=16384 for a total 1179648 samples per iter.
Not sure how long I should leave it running, any rough estimate would be awesome.
Thanks!

What's a rough estimate for training time of the 22Khz v1 pretrained model provided here?
I'm currently training a 44Khz config.
At the moment I'm training using 3 GPU's, batch_size=24 and segment_size=16384 for a total 1179648 samples per iter.
Not sure how long I should leave it running, any rough estimate would be awesome.
Thanks!

It took about 13-14 days to train the model up to 2,500k steps with two V100 GPUs.
I think the settings you mentioned will be much slower than my experience.
It is advisable to adjust the training steps as needed because it synthesizes high-quality audio even at an earlier step.

Thanks.
I'll leave this issue open for now and rename it.
(Hopefully) someone will be interested in higher sampling rates using this vocoder and I can provide some side-by-side audio samples and a pretrained model.

@jik876 Hello, I think maybe 13-14 days is too long to change some settings and get some new results.
Do you have any idea about how to accelerate the whole training process ? What about pretrained models by stft and mel loss on generator ?
Thank you !

@Yablon
Thanks for your interest.
Transfer learning a previously trained model would be a good way.
In our experience, transfer learning has been well applied to HiFi-GAN, so I think you will get good results without having to train the model from scratch when you change settings. In some cases this can lead to lower quality than training from scratch, but it would be enough to make sure that the settings you have changed are effective.
Except for using more GPUs, I think you have to take a trade-off in quality to accelerate training.

@CookiePPP What are the hyper-parameters you are using for training 44.1 kHz ?
Specially these:
"num_mels":
 "num_freq":
 "n_fft":
 "hop_size":
 "win_size":

@rishikksh20
https://github.com/CookiePPP/cookietts/blob/experimental/CookieTTS/_4_mtw/hifigan/config_v1_48Khz_multiGPU.json#L16-L29
    "discriminator_periods": [3, 5, 7, 11, 17, 23, 37],

    "segment_size": 16384,
    "num_mels": 80,
    "num_freq": 1025,
    "n_fft"   : 2048,
    "hop_size": 512,
    "win_size": 2048,

    "sampling_rate": 44100,

    "fmin": 20,
    "fmax": 11025,
    "fmax_for_loss": null,

Closing this, comment here if you want any updates or models as I'm normally happy to respond. :smile:

Hi, how are things going?
I am also on this and I modified the upsampling layers as follows:
    "upsample_rates": [8,8,4,2],
    "upsample_kernel_sizes": [16,16,8,4],

that worked quite well with MelGAN for me.
As I am also using a different preprocessing and few other things differently I am currently testing with LJ only before going on to a universal model.
Someone tried the v2 config?

Hi, how are things going?

Currently waiting for my tacotron to retrain with new speakers. One problem I found is that my tacotron2 doesn't provide good enough spectrograms, so when I fine-tune HiFi-GAN on a 350~ speaker tacotron2, the output audio seems slightly blended between speakers. (it's subtle, but noticeable when you listen to audio samples side-by-side)
I've added a GAN loss to my tacotron2 to significantly reduce the blur and changed the n_mel_channels to 160 and everything is currently training again. 😄

Someone tried the v2 config?

I don't know, but I'm somewhat curious. I lose half my processing time to the vocoder so if v2 sounds good at 44Khz then it's definitely worth keeping a pretrained copy lying around.

I am now training with v2. On CPU I then get the same performance as MelGAN. So for some test sentence this is from 1.3s to 0.3s.
Only have 1 gpu free atm so it might take ages unfortunately.

Update, my curve is definitely flatter, hope it will continue to decrease. The two times where it restarted was when I switched from v1 to v2 and another reset where I had a problem writing the checkpoint.

Quick update again. I am at more than 400k steps and still sounds rather noisy. Loss still decreasing so let's see after the weekend.
It's V2 at 44kHz so either takes longer  or the model capacity is not enough.

Curious how it went @m-toman !

Curious how it went @m-toman !

Curious how it went @m-toman !

Had to stop a few times because of more urgent trainings and recently restarted with additional discriminator periods. Get okish quality pretty quickly but it can't seem to get rid of quite a few artefacts.

Curious how it went @m-toman !

Had to stop a few times because of more urgent trainings and recently restarted with additional discriminator periods. Get okish quality pretty quickly but it can't seem to get rid of quite a few artefacts.

@CookiePPP how did you changed VCTK dataset (all wavs and texts) to the acceptable form by this code?

@skol101
I changed the code.


Made the requested time suppliable by user

Made the requested time suppliable by user
If we need to retry the job due to technical problems, we need to be able to force the timestamp.

LGTM :shipit:


ci: create renovate changeset after the pull request is merged

Pushing directly on a branch created by Renovate induces three problems:

it disables the automatic rebase of the PR, meaning Renovate won't keep the PR up to date. For instance, it won't regenerate the lockfile and resolve conflicts
Renovate auto-merge is also being disabled
it interferes with the ongoing GH actions

With this PR, the renovate workflow does not run when the Renovate PR is opened, but when it is closed.
As a result, the changeset is directly pushed to the main branch.

Codecov Report

Merging #1283 (04d1641) into main (1e0a2c0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1283   +/-   ##
=======================================
  Coverage   94.74%   94.74%
=======================================
  Files          48       48
  Lines        6931     6931
  Branches      450      450
=======================================
  Hits         6567     6567
  Misses        364      364

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


unable to get correct nyc/istanbul coverage report for typescript

Please use the template provided below, when reporting bugs:
Expected Behavior
get correct coverage report for typescript project
Observed Behavior
coverage is not correct for typescript files. i.e. html coverage map is miss-aligned with the source also coverage numbers seem to not be correct (and sometimes non deterministic
I've described my issue in https://stackoverflow.com/questions/44701991/getting-nyc-istanbul-coverage-report-to-work-with-typescript
copy-pasting  the info here:
nyc relevant config in package.json
"scripts": {
    "test:coverage": "nyc npm run test:unit",
    "test:unit": "gulp mocha"
}
"nyc": {
    "check-coverage": true,
    "all": true,
    "extension": [
      ".js",
      ".jsx",
      ".ts",
      ".tsx"
    ],
    "include": [
      "src/**/!(*.test.*).[tj]s?(x)"
    ],
    "reporter": [
      "html",
      "lcov",
      "text",
      "text-summary"
    ],
    "report-dir": "docs/reports/coverage"
  }

gulpfile.js mocha relevant part
const SRC_DIR = path.join(__dirname, 'src');
const SRC_FILES = path.join(SRC_DIR, '**', '*.[jt]s?(x)');
const TEST_FILES = path.join(SRC_DIR, '**', '*.test.[jt]s?(x)');
const MOCHA_CONFIG = {
    src: [
        TEST_FILES
    ],
    watchSrc: [
        SRC_FILES,
        TEST_FILES
    ],
    mocha: {
        // compilers: [
        //     'ts:ts-node/register',
        //     'tsx:ts-node/register'
        // ],
        require: [
            './tests/setup.js',
            'ignore-styles',
            'source-map-support/register'
        ]
    }
};
gulp.task('mocha', mocha(MOCHA_CONFIG));

tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./",
    "rootDir": "./src",
    "outDir": "./build",
    "allowJs": true,
    "module": "commonjs",
    "target": "es5",
    "lib": ["es5", "es6", "dom"],
    "sourceMap": true,
    "inlineSourceMap": false,
    "inlineSources": false,
    "experimentalDecorators": true,
    "noUnusedParameters": true,
    "noUnusedLocals": true,
    "jsx": "react",
    "moduleResolution": "node"
  },
  "exclude": [
    "docs",
    "tests",
    "**/*.test.js",
    "**/*.test.jsx",
    "**/*.test.ts",
    "**/*.test.tsx",
    "tools",
    "gulpfile.js",
    "node_modules",
    "build",
    "typings/main",
    "typings/main.d.ts"
  ],
  "awesomeTypescriptLoaderOptions": {
    "useCache": true,
    "useBabel": true
  }
}

I've tried a number of approaches, some of them seem to be unable to use source maps and other fails due to ts-node/tsc errors.
With the above setup coverage produces results for all the files but they are incorrect for TS files most probably due to source maps not being used (i.e. report shows no coverage for lines which are comments and the numbers seems to be wrong as well).
With a number of variant approaches tried with no success one of the most commonly suggested is to add "require": ["ts-node/register"] to nyc configuration yet then I'm getting errors complaining about i.e. gulpfile.js, docs/reports/coverage/lcov-report/prettify.js and number of other JS files to be not under 'rootDir' which is correct yet it is not clear why ts-node tries to process all the files out of src even if they are excluded in tsconfig.json (still the configuration gets really complex).
Forensic Information
Operating System: macOS 10.12.4
Environment Information:
node v7.2.0
npm v3.10.9
nyc v11.0.1

I'm also seeing this issue. I've created a repository to demonstrate the issue. In that repository, I created two files with identical contents. One has a .ts extension and the other has a .tsx extension. Interestingly, the coverage highlighting seems accurate in the .ts file, but not in the .tsx file:

This suggests that there is some sort of issue with the source map, but I don't know enough to tell whether it's an issue with the generation of the source map or one of the libraries that are processing it.
I hope this helps.

I also see several of the second example coverage reports on .ts files as well. With files fully covered when using nyc 10.x.

@bradlord running your example with<EMAIL_ADDRESS>I seem to get identical output for bot the tsx and ts file.
I don't personally use TypeScript for any projects, so I'm not the best person in the world to debug issues; but perhaps we can loop in @JaKXz and @mohsen1 who have helped document the usage of TypeScript with nyc/istanbul.
I'll happily help land any updates to documentation we want to make, and any patches we come up with ; I'd also love to get regression tests in place for TypeScript if we can figure out a reasonable approach.
Any ways, as I'm not a TypeScript expert, any help improving support in nyc is greatly appreciated.

I tracked down the difference between the TS and TSX coverage reporst to a source map handling bug in ts-node. After upgrading to the latest version of ts-node, I'm at least seeing identical output for TS and TSX files.

upgrading to latest nyc, ts-node did not change anything. Yet just found that using "target": "es5" as compilerOptions in tsconfig.conf seems to solve the issue (need to confirm though if coverage report is fully correct).
Also if you need es5 target in production there is still an option to use TS_NODE_COMPILER_OPTIONS='{"target":"es6"}' nyc ... i.e. in package.json's scripts section

@ciekawy interesting; nyc should understand ES6 syntax -- so not quite sure why compiling down to ES5 would make a difference.
@bradlord @jvanoostveen perhaps you can try the trick that @ciekawy came up with; and if that works we can document it in our README and typescript tutorial -- it seems like it would also be worthwhile to open up an issue on ts-node, tracked to this issue, I'd really love to get things behaving as expected, without much fiddling, between the two libraries.

I think it's otherwise as nyc/Istanbul seem to handle better ES6 than ES5. "target": "es6" which seems to work transpiles to ES6

Hello, I am on the same team as @jvanoostveen. We already have "target": "es5"  in our tsconfig.json.
The issue we are seeing with nyc 11.x seems to be a flaky one. I have 2 test-runs on identical source-files, one producing Branches: 99.79% ( 8998/9017 ) and the other one producing Branches: 100% ( 7537/7537 ).
Hope this information is useful.
Forensics
os: windows
nyc: 11.1.0
last known working version: 10.3.2
command: cross-env TS_NODE_FAST=true nyc --check-coverage -- mocha --compilers ts:ts-node/register --reporter dot --recursive

@johan-gorter as indicated in the initial post, make sure that nyc has a require stanza that pulls in "ts-node/register" for you. This is required because the --all step functions by pre-instrumenting all of the files, and pulling out the coverage information.
If nyc itself is not the process performing the instrumentation, then there will be a discrepancy between the line count retrieved during the fake instrumentation applied by --all and the instrumentation applied when running tests that exercise the file.
tldr; if you're using --all, the nyc process needs to control the instrumentation of the files; feel free to share your package.json with me, and something might jump out.

Thanks for pointing me in the right direction. I added the require statement to my package.json which contained the all:true.
We had problems with this require stanza before, producing vague error messages: ts.Debug.assert(outputText !== undefined, "Output generation failed". I found out that this could be fixed this by adding "**/*.d.ts" to our excludes. (nyc seems to consider file.d.ts to have a .ts extension)

The result now is that branches and functions are at 100% again. However, we now have 0.2% missing statement coverage and 0.21% missing line coverage. There seem to be at least two cases where we see missing coverage:

Import statements that import only interfaces from another file

    import { EditMode } from '../session';

Files that only contain an interface, like point.ts (Statements 0/1, Lines 0/1)

    export interface Point {
      x: number;
      y: number;
    }

When using "all": false, coverage is at 100%. Do you want me to file this a a new issue?
I did not observe any flaky behavior anymore by the way.

@johan-gorter are you still seeing flaky behavior (coverage information that fluctuates)?
If this problem seems to have been corrected, I do recommend opening a new issue; the fact taht these files do not get exercised might be a different issue entirely; bonus points, perhaps we could figure out a minimum reproduction.
@ciekawy it sounds like you've got a working solution now, and we can probably close this ticket?

I have not observed any flakyness anymore. I will try to find the time to create a minimum reproduction.

@johan-gorter going to go ahead and close this, thanks for the reproduction.

By the way, do not know if this is related, but I noticed the removeComments option, in tsconfig.json, if enabled will remove Istanbul ignore tags and so actual coverage will be different from the expected one.

I found that using "inlineSourceMap": true in tsconfig.json and inline-source-map for devtool in my Webpack conf (Because I'm doing Typescript -> ES6 -> Babel -> ES5), seems to have fixed the alignment of my TS source in coverage. I am also requiring source-map-support/register with mocha's -r switch.
Hopefully, this helps put anyone on the right track. I understand you may not be using the same setup as me (As I've Webpack in the middle) so our circumstance may be different.

I still have that issue on .ts code, I tried everything mentioned above, switching to es6 or es2017 using inlineSourceMap. none of them solved my issue.
when I run the test, 3 json files are generated in my .nyc_output. But their statementMap are different.  if nyc analyze one of the json first, the result is correct, but if it analyze the other file fist, and then try to merge the good one into it, the result would be broken.

see: https://github.com/Microsoft/TypeScript/issues/24993 I would like for us to better document a happy path for TypeScript and nyc.

I am not tracking this heavily as this is not blocking me now. While the SO provides generic way to get the coverage working, there is another issue making the result non-deterministic - I figured out that this is due to the first file in the report is being randomly omitted which affects the overall coverage - I thought this is mentioned in another nyc ticket yet cannot find it now.

@ciekawy in the past I've always tracked issues with non-determinism down to the merging of multiple coverage files. If you ever consistently bump into this issue, a repository with a minimal reproduction would be useful.


[QUESTION] How to create a new category?

WEB PART NOT LOADING: If you are getting the error: "Microsoft 365 learning pathways has a configuration issue. Ask your administrator for assistance". Please review the Diagnosing Pre-Check guidance before submitting your bug.

Submit your question
What is the context of your question

[ ] Installation
[ ] Learning Pathways Content
[ ] SharePoint Success Content
[X] Administration
[X] Custom Content
[ ] Viewer Web Part

What is your question
I hope I'm missing something really simple, in which case I'm sorry for wasting your time, but I can't find this anywhere.
Where's the button to create a new category?  Not sub-category, but top level category.
Thank you.

Hello @BostonO365
Top level categories cannot be created without hosting and connecting to a Content Delivery Network that has them defined.
More info about deployment is available here:
https://docs.microsoft.com/en-us/office365/customlearning/custom_partnerguide_contint#content-pack-guidelines

Closed as answered. If you are still having an issue please create a new issue.


Fix a warning that shows up in Xcode 9

See https://stackoverflow.com/questions/44473146/this-function-declaration-is-not-a-prototype-warning-in-xcode-9 for context

This should be the only place in Core.  We need more testing to check for other places.


fix(test): Wait for zebrad and lightwalletd to reach the tip in tests, to improve test coverage

Motivation
We need to make sure lightwalletd and zebrad is at the tip for several tests. Fix https://github.com/ZcashFoundation/zebra/issues/4894 if merged.
Solution
Add a new function and move common code to check if we are at the tip. Call it from tests. We are calling this function from all tests that call lightwalletd_integration_test and from wallet_grpc_test and send_transaction_test.
Also, the lightwalletd_test_suite now runs wallet_grpc_test before send_transaction_test so we know cache is up to date when running the tests using the suite.
Functional changes:

use the same code to configure, launch, and wait for zebrad and lightwalletd across all 8 RPC integration tests,
this makes all these tests check a bunch of things the same way
run the quick tests first in the test suite, then the slow tests

Refactors:

make some test functions easier to call

Review
This PR is ready for review.
Reviewer Checklist

[ ] Will the PR name make sense to users?

[ ] Does it need extra CHANGELOG info? (new features, breaking changes, large changes)

[ ] Are the PR labels correct?
[ ] Does the code do what the ticket and PR says?
[ ] How do you know it works? Does it have tests?

[ ] Do the existing tests run, or are we accidentally skipping them? Check the test time and test logs.

@mergifyio update

I combined the test APIs for the lightwalletd sync and gRPC tests.
This will give us a consistent sync to the tip across all those tests.
But I still need to fix some test failures.

I think I've fixed all the test failures, so this PR is ready for review.
If any of the CI runs fail, I'll fix them on Monday.

I fixed a bug in the send transaction test tip sync check, and tried to speed up lightwalletd syncs to avoid GitHub Actions timeouts. (They are taking 6 hours, which seems like far too long for lightwalletd.)

It's possible the test speed will be fixed by PR #5134 or ticket #5253.

It's possible the sync speed will be fixed by PR #5134 or ticket #5253.

I've added ticket #5253 to this sprint.

It's possible the sync speed will be fixed by PR #5134 or ticket #5253.

I've added ticket #5253 to this sprint.

We might also want to try re-applying #4933, but only for transactions over a certain size.
(Because they are more likely to be shielded transactions.)

I'm testing how long zebrad and zcashd full lightwalletd syncs take.
If Zebra is faster, I'll move the full lightwalletd sync to the main branch (like the full Zebra Zcash chain sync).
If zcashd is faster, I'll try to work out if it is a recent Zebra regression, or what we need to do to fix it.
I used these commands:
$ time lightwalletd     --zcash-conf-path /home/dev/.config/zebra/zebrad-mainnet-lightwalletd-tmp-zcash.conf     --data-dir $(mktemp -d)     --log-file /dev/stdout     --grpc-bind-addr <IP_ADDRESS>:0     --http-bind-addr <IP_ADDRESS>:0     --no-tls-very-insecure           2>&1 |   rg --passthru --max-count 1 'Adding block to cache 182[0-9]{4}'

$ time lightwalletd     --zcash-conf-path /home/dev/.zcash/zcash.conf     --data-dir $(mktemp -d)     --log-file /dev/stdout     --grpc-bind-addr <IP_ADDRESS>:0     --http-bind-addr <IP_ADDRESS>:0     --no-tls-very-insecure           2>&1 |  rg --passthru --max-count 1 'Adding block to cache 182[0-9]{4}'

rg (ripgrep) is a Rust-based grep alternative.
/home/dev/.config/zebra/zebrad-mainnet-lightwalletd-tmp-zcash.conf is set up like it is in the lightwalletd tests.

I'm testing how long zebrad and zcashd full lightwalletd syncs take.

Zebra:
{"app":"lightwalletd","level":"info","msg":"Adding block to cache 1820016<PHONE_NUMBER>b8829cf2e067786d21d6d8f466c4ef5a4ed498bc3784c2aaf48843","time":"2022-09-29T00:40:09+10:00"}

real    425m2.980s
user    54m46.146s
sys     10m42.911s

zcashd:
{"app":"lightwalletd","level":"info","msg":"Adding block to cache 1820013<PHONE_NUMBER>3906dc28e4be077d64a2b93faaad5d73882370f3843fb3fae674ef","time":"2022-09-28T22:45:53+10:00"}

real    310m45.464s
user    55m43.160s
sys     11m8.546s

Zebra is 37% slower than zcashd (7h vs 5h), so this is a performance issue in Zebra we need to fix before the release candidate.

I made verbose block requests about 8x faster in commit eb1359acb0.
I'm running a full sync overnight to see if that helps.

I made verbose block requests about 8x faster in commit eb1359a.
I'm running a full sync overnight to see if that helps.

A full lightwalletd sync takes 3.4 hours now, so that meets our performance goals for the release candidate. (3.4h vs 5h for zcashd.)
$ time lightwalletd-mainnet-tmp | rg --passthru --max-count 1 'Adding block to cache 182[0-9]{4}'
...
{"app":"lightwalletd","level":"info","msg":"Adding block to cache 1820018<PHONE_NUMBER>85c92f02a5dec63a62d77455a9e631a624b24c50bfc7e733df65d9","time":"2022-09-29T23:22:58+10:00"}

real    204m48.731s
user    52m38.236s
sys     10m22.202s

release-drafter labeled this PR as C-trivial. Probably because we edited the file zcash-rpc-diff in zebra-utils. I removed the label.

release-drafter labeled this PR as C-trivial. Probably because we edited the file zcash-rpc-diff in zebra-utils. I removed the label.

Yeah we might want to change that pattern to "only zebra-utils" or remove it entirely. Feel free to push a PR!

I got the path wrong for the lightwalletd cached state, so there is one lightwalletd cached state disk that is missing the lightwalletd database files.
The latest 2 commits fix the path, so the env var is used for all the syncs that might use or create/update cached states.

ubuntu-latest tests failed due to mempool_cancel_mined. That's bug #5301.
https://github.com/ZcashFoundation/zebra/actions/runs/3170245187/jobs/5162701722#step:14:17349

@mergifyio update

All the checks passed, but some didn't run because the PR was automatically rebased to main.

Alfredo is going to review this PR, but I can't set him as a reviewer, because he opened it.

The macOS test had an unrelated failure, I opened PR #5325 to get better diagnostics.

I'm reviewing this PR now.

@Mergifyio update

mempool_cancel_mined failed in the merge-queue

@Mergifyio refresh


docs: add bazel to build tool

fixes #50

Hey @santoshyadavdev, looking at the section, I'm not sure Bazel belongs there. There's a list of tools that can help with bundling, where Bazel would help build orchestration and delegate the bundling portion to any of the already listed tools.
Excuse me for the misleading comment I left in the issue.

Cool no problem 😊


Push latest to docker repository

Could you push latest version to docker repository? I am using emulator:latest, but getting 404 when requesting http://localhost:8701/api. Workaround is to use fcl cli to run the emulator, but I prefer docker.
Note, I tried to build the image myself from /cmd/emulator, but getting error:
=> ERROR [build-app 6/6] RUN --mount=type=ssh     --mount=type=cache,target=/go/pkg/mod     --mount=type=cache,target=/root/.cache/go-build   0.2s
------
 > [build-app 6/6] RUN --mount=type=ssh     --mount=type=cache,target=/go/pkg/mod     --mount=type=cache,target=/root/.cache/go-build     GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=arm64     go build -ldflags "-extldflags -static" -o ./app ./cmd/emulator:
#16 0.171 go: go.mod file not found in current directory or any parent directory; see 'go help modules'
------
executor failed running [/bin/sh -c GO111MODULE=on CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH     go build -ldflags "-extldflags -static" -o ./app ./cmd/emulator]: exit code

My bad, latest changes were already pushed to the docker repository. But, I am still wondering why /api is not found. This is not the case when running the emulator via the cli. What is the difference?

np, I hope you are well. I am running dev-wallet and emulator with docker. I did a mistake. /api is an endpoint in dev-wallet, not the emulator.

@sideninja  Do you know why /api does not exist in ghcr.io/onflow/fcl-dev-wallet:latest? Should I open an issue there?

So I can't just run fcl-dev-wallet with docker-compose? I remember that this worked before. What is the point of ghcr.io/onflow/fcl-dev-wallet then?

I changed FLOW_ACCESS_NODE=http://emulator:8888 to FLOW_ACCESS_NODE=http://localhost:8888 and everything worked xD Thanks for your time :)

Great that it works. Anytime.


flutter/engine builds include deleted .h files in Flutter.Framework

It appears we are not doing clean builds of flutter/engine. The old header files
FlutterAsyncMessageListener.h
FlutterJSONMessageListener.h
FlutterMessageListener.h

are still present in Flutter.Framework/Headers.
Steps to Reproduce
Create a fresh Flutter clone and run flutter doctor. The old header files are then downloaded into flutter/bin/cache/artifacts/engine/ios/Flutter.Framework/Headers/. This results in build warnings when building Flutter apps for iOS, since these files are no longer mentioned in the umbrella Flutter.h. You can see the warnings if you execute flutter run -v in examples/platform_services, see below.
Logs
<module-includes>:1:1: warning: umbrella header for module 'Flutter' does not include header 'FlutterAsyncMessageListener.h' [-Wincomplete-umbrella]
#import "Headers/Flutter.h"
^
<module-includes>:1:1: warning: umbrella header for module 'Flutter' does not include header 'FlutterJSONMessageListener.h' [-Wincomplete-umbrella]
<module-includes>:1:1: warning: umbrella header for module 'Flutter' does not include header 'FlutterMessageListener.h' [-Wincomplete-umbrella]
3 warnings generated.
3 warnings generated.

The bots to incremental builds.  We can manually clobber the bots to get a clean build, but the real fix is to clean out the Headers directory before copying the new headers in.

Presumably the clean-out is a change to our GN files.  Probably:
https://github.com/flutter/engine/blob/master/shell/platform/darwin/ios/BUILD.gn#L180
@chinmaygarde probably could tell us what the magic is.

I don't see these headers anywhere in the artifacts cache, is this resolved?

I don't see the listed .h files in latest Flutter sdk.

I am going ahead and closing this as resolved. If you disagree or think this was closed by mistake, please write in comments and I'll reopen.
Thanks.


Updating macros with tests

Adds helpful error messages to failures
Added with_hint property

I've rebased with all of the changes and changed the name to hint, thank you for the suggestion.

I've rebased with all of the changes and changed the name to hint, thank you for the suggestion.

There seems to be a few unresolved clippy lints in the build log:
2021-01-10T07:29:50.8459973Z error: useless use of `format!`
2021-01-10T07:29:50.8461224Z   --> gdnative-derive/src/native_script/property_args.rs:54:25
2021-01-10T07:29:50.8461709Z    |
2021-01-10T07:29:50.8462105Z 54 |                         format!("path value is not a string literal"),
2021-01-10T07:29:50.8462797Z    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"path value is not a string literal".to_string()`
2021-01-10T07:29:50.8463296Z    |
2021-01-10T07:29:50.8464802Z    = note: `-D clippy::useless-format` implied by `-D clippy::complexity`
2021-01-10T07:29:50.8465972Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8466634Z
2021-01-10T07:29:50.8481992Z error: useless use of `format!`
2021-01-10T07:29:50.8483309Z   --> gdnative-derive/src/native_script/property_args.rs:71:25
2021-01-10T07:29:50.8483854Z    |
2021-01-10T07:29:50.8484310Z 71 |                         format!("hint value is not a string literal"),
2021-01-10T07:29:50.8485038Z    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"hint value is not a string literal".to_string()`
2021-01-10T07:29:50.8485693Z    |
2021-01-10T07:29:50.8486643Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8487305Z
2021-01-10T07:29:50.8502804Z error: useless use of `format!`
2021-01-10T07:29:50.8503762Z   --> gdnative-derive/src/native_script/property_args.rs:90:25
2021-01-10T07:29:50.8504231Z    |
2021-01-10T07:29:50.8504655Z 90 |                         format!("before_get value is not a string literal"),
2021-01-10T07:29:50.8505351Z    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"before_get value is not a string literal".to_string()`
2021-01-10T07:29:50.8505883Z    |
2021-01-10T07:29:50.8506807Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8507471Z
2021-01-10T07:29:50.8523067Z error: useless use of `format!`
2021-01-10T07:29:50.8524106Z    --> gdnative-derive/src/native_script/property_args.rs:109:25
2021-01-10T07:29:50.8524663Z     |
2021-01-10T07:29:50.8525140Z 109 |                         format!("after_get value is not a string literal"),
2021-01-10T07:29:50.8525904Z     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"after_get value is not a string literal".to_string()`
2021-01-10T07:29:50.8526542Z     |
2021-01-10T07:29:50.8527603Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8528365Z
2021-01-10T07:29:50.8545633Z error: useless use of `format!`
2021-01-10T07:29:50.8546677Z    --> gdnative-derive/src/native_script/property_args.rs:128:25
2021-01-10T07:29:50.8547219Z     |
2021-01-10T07:29:50.8547767Z 128 |                         format!("before_set value is not a string literal"),
2021-01-10T07:29:50.8548449Z     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"before_set value is not a string literal".to_string()`
2021-01-10T07:29:50.8549363Z     |
2021-01-10T07:29:50.8550439Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8551203Z
2021-01-10T07:29:50.8567845Z error: useless use of `format!`
2021-01-10T07:29:50.8568877Z    --> gdnative-derive/src/native_script/property_args.rs:147:25
2021-01-10T07:29:50.8569415Z     |
2021-01-10T07:29:50.8569893Z 147 |                         format!("after_set value is not a string literal"),
2021-01-10T07:29:50.8570672Z     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"after_set value is not a string literal".to_string()`
2021-01-10T07:29:50.8571269Z     |
2021-01-10T07:29:50.8572328Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8573085Z
2021-01-10T07:29:50.8634371Z     Checking rand_chacha v0.2.2
2021-01-10T07:29:50.9829642Z error: useless conversion to the same type: `proc_macro2::TokenStream`
2021-01-10T07:29:50.9831274Z    --> gdnative-derive/src/variant/from.rs:125:8
2021-01-10T07:29:50.9831892Z     |
2021-01-10T07:29:50.9832558Z 125 |     Ok(result.into())
2021-01-10T07:29:50.9833098Z     |        ^^^^^^^^^^^^^ help: consider removing `.into()`: `result`
2021-01-10T07:29:50.9833495Z     |
2021-01-10T07:29:50.9834733Z     = note: `-D clippy::useless-conversion` implied by `-D clippy::complexity`
2021-01-10T07:29:50.9836182Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
2021-01-10T07:29:50.9836873Z
2021-01-10T07:29:51.0348286Z    Compiling mini-internal v0.1.13
2021-01-10T07:29:51.0898435Z error: useless conversion to the same type: `proc_macro2::TokenStream`
2021-01-10T07:29:51.0900126Z   --> gdnative-derive/src/variant/to.rs:83:8
2021-01-10T07:29:51.0901032Z    |
2021-01-10T07:29:51.0901638Z 83 |     Ok(result.into())
2021-01-10T07:29:51.0902431Z    |        ^^^^^^^^^^^^^ help: consider removing `.into()`: `result`
2021-01-10T07:29:51.0903200Z    |
2021-01-10T07:29:51.0904524Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
2021-01-10T07:29:51.0905514Z
2021-01-10T07:29:51.1042523Z error: unneeded `return` statement
2021-01-10T07:29:51.1043627Z   --> gdnative-derive/src/lib.rs:35:9
2021-01-10T07:29:51.1044345Z    |
2021-01-10T07:29:51.1044829Z 35 |         return err;
2021-01-10T07:29:51.1045407Z    |         ^^^^^^^^^^^ help: remove `return`: `err`
2021-01-10T07:29:51.1045927Z    |
2021-01-10T07:29:51.1046925Z    = note: `-D clippy::needless-return` implied by `-D clippy::style`
2021-01-10T07:29:51.1048289Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
2021-01-10T07:29:51.1049132Z
2021-01-10T07:29:51.1310790Z error: aborting due to 9 previous errors
2021-01-10T07:29:51.1311431Z
2021-01-10T07:29:51.1359928Z error: could not compile `gdnative-derive`

There seems to be a few unresolved clippy lints in the build log:
2021-01-10T07:29:50.8459973Z error: useless use of `format!`
2021-01-10T07:29:50.8461224Z   --> gdnative-derive/src/native_script/property_args.rs:54:25
2021-01-10T07:29:50.8461709Z    |
2021-01-10T07:29:50.8462105Z 54 |                         format!("path value is not a string literal"),
2021-01-10T07:29:50.8462797Z    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"path value is not a string literal".to_string()`
2021-01-10T07:29:50.8463296Z    |
2021-01-10T07:29:50.8464802Z    = note: `-D clippy::useless-format` implied by `-D clippy::complexity`
2021-01-10T07:29:50.8465972Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8466634Z
2021-01-10T07:29:50.8481992Z error: useless use of `format!`
2021-01-10T07:29:50.8483309Z   --> gdnative-derive/src/native_script/property_args.rs:71:25
2021-01-10T07:29:50.8483854Z    |
2021-01-10T07:29:50.8484310Z 71 |                         format!("hint value is not a string literal"),
2021-01-10T07:29:50.8485038Z    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"hint value is not a string literal".to_string()`
2021-01-10T07:29:50.8485693Z    |
2021-01-10T07:29:50.8486643Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8487305Z
2021-01-10T07:29:50.8502804Z error: useless use of `format!`
2021-01-10T07:29:50.8503762Z   --> gdnative-derive/src/native_script/property_args.rs:90:25
2021-01-10T07:29:50.8504231Z    |
2021-01-10T07:29:50.8504655Z 90 |                         format!("before_get value is not a string literal"),
2021-01-10T07:29:50.8505351Z    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"before_get value is not a string literal".to_string()`
2021-01-10T07:29:50.8505883Z    |
2021-01-10T07:29:50.8506807Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8507471Z
2021-01-10T07:29:50.8523067Z error: useless use of `format!`
2021-01-10T07:29:50.8524106Z    --> gdnative-derive/src/native_script/property_args.rs:109:25
2021-01-10T07:29:50.8524663Z     |
2021-01-10T07:29:50.8525140Z 109 |                         format!("after_get value is not a string literal"),
2021-01-10T07:29:50.8525904Z     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"after_get value is not a string literal".to_string()`
2021-01-10T07:29:50.8526542Z     |
2021-01-10T07:29:50.8527603Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8528365Z
2021-01-10T07:29:50.8545633Z error: useless use of `format!`
2021-01-10T07:29:50.8546677Z    --> gdnative-derive/src/native_script/property_args.rs:128:25
2021-01-10T07:29:50.8547219Z     |
2021-01-10T07:29:50.8547767Z 128 |                         format!("before_set value is not a string literal"),
2021-01-10T07:29:50.8548449Z     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"before_set value is not a string literal".to_string()`
2021-01-10T07:29:50.8549363Z     |
2021-01-10T07:29:50.8550439Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8551203Z
2021-01-10T07:29:50.8567845Z error: useless use of `format!`
2021-01-10T07:29:50.8568877Z    --> gdnative-derive/src/native_script/property_args.rs:147:25
2021-01-10T07:29:50.8569415Z     |
2021-01-10T07:29:50.8569893Z 147 |                         format!("after_set value is not a string literal"),
2021-01-10T07:29:50.8570672Z     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"after_set value is not a string literal".to_string()`
2021-01-10T07:29:50.8571269Z     |
2021-01-10T07:29:50.8572328Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
2021-01-10T07:29:50.8573085Z
2021-01-10T07:29:50.8634371Z     Checking rand_chacha v0.2.2
2021-01-10T07:29:50.9829642Z error: useless conversion to the same type: `proc_macro2::TokenStream`
2021-01-10T07:29:50.9831274Z    --> gdnative-derive/src/variant/from.rs:125:8
2021-01-10T07:29:50.9831892Z     |
2021-01-10T07:29:50.9832558Z 125 |     Ok(result.into())
2021-01-10T07:29:50.9833098Z     |        ^^^^^^^^^^^^^ help: consider removing `.into()`: `result`
2021-01-10T07:29:50.9833495Z     |
2021-01-10T07:29:50.9834733Z     = note: `-D clippy::useless-conversion` implied by `-D clippy::complexity`
2021-01-10T07:29:50.9836182Z     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
2021-01-10T07:29:50.9836873Z
2021-01-10T07:29:51.0348286Z    Compiling mini-internal v0.1.13
2021-01-10T07:29:51.0898435Z error: useless conversion to the same type: `proc_macro2::TokenStream`
2021-01-10T07:29:51.0900126Z   --> gdnative-derive/src/variant/to.rs:83:8
2021-01-10T07:29:51.0901032Z    |
2021-01-10T07:29:51.0901638Z 83 |     Ok(result.into())
2021-01-10T07:29:51.0902431Z    |        ^^^^^^^^^^^^^ help: consider removing `.into()`: `result`
2021-01-10T07:29:51.0903200Z    |
2021-01-10T07:29:51.0904524Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
2021-01-10T07:29:51.0905514Z
2021-01-10T07:29:51.1042523Z error: unneeded `return` statement
2021-01-10T07:29:51.1043627Z   --> gdnative-derive/src/lib.rs:35:9
2021-01-10T07:29:51.1044345Z    |
2021-01-10T07:29:51.1044829Z 35 |         return err;
2021-01-10T07:29:51.1045407Z    |         ^^^^^^^^^^^ help: remove `return`: `err`
2021-01-10T07:29:51.1045927Z    |
2021-01-10T07:29:51.1046925Z    = note: `-D clippy::needless-return` implied by `-D clippy::style`
2021-01-10T07:29:51.1048289Z    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
2021-01-10T07:29:51.1049132Z
2021-01-10T07:29:51.1310790Z error: aborting due to 9 previous errors
2021-01-10T07:29:51.1311431Z
2021-01-10T07:29:51.1359928Z error: could not compile `gdnative-derive`

Thank you, I'll fix it.

There seems to be a few unresolved clippy lints in the build log:

Thank you, I'll fix it.

There seems to be a few unresolved clippy lints in the build log:

Fixed clippy issues and squashed the PR.
bors retry

Fixed clippy issues and squashed the PR.
bors retry


Update LLVM & TF Submodules.

Updates TF to HEAD and LLVM to match TF commit.
./scripts/git/update_tf_llvm_submodules.py --update_build_files=true

Looks like something got renamed "/usr/bin/ld: cannot find -lMLIRAffine"

MLIRAffine got named MLIRAffineOps... but why? I thought we were getting rid of op suffixes :-/

And the change that did this was landed without review. Uh ok https://reviews.llvm.org/D78317. I'll investigate that more later I guess

This finally builds locally with cmake, so I have pretty high confidence it will build on the CI


Added deployment.hostAliases

Added support for hostAliases to make it possible to add entries to a pods /etc/hosts file

@Hallonbat Validation Successful

LGTM


How to publish stubs?

Hello guys,
I already publish laravel stubs however no datatables stubs there. I made this file manually however it don`t works like that. I just want to make easy to make bunch of classes.
php artisan datatables:make Admin\User --model=App\Models\User

but it still use stub from vendor

On config/datatables-button.php, update: 'stub' => '/stubs/dataTables',

Thanks :)


Fix Reload for F# projects

Hey there I came across your project because some folks in the F# space are looking for an Avalonia Live Reload/HMR
(https://github.com/AvaloniaCommunity/Avalonia.FuncUI/issues/115)
However, I was not able to make it work out of the box since in F# interfaces must be checked explicitly so with the help of @JaggerJo it seems to work now
And if you don't mind I also added an Avalonia.FuncUI sample (it's Avalonia after all) let me know any feedback you may have 😁

Hey @worldbeater!
If you want you can add your project to https://github.com/AvaloniaCommunity and also publish the NuGet as AvaloniaCommunity.*. (just a suggestion if you want to - I can also totally understand if you want to keep it on you GitHub account)

Hey @JaggerJo! I guess I'm too late — apparently didn't notice the comment a couple of months ago for some reason. No objections about moving Live.Avalonia to AvaloniaCommunity if your suggestion is still relevant. Sending a request to transfer the ownership of the repository now.

GitHub says JaggerJo/Live.Avalonia already exists, so I guess moving the repository should be possible if you delete the fork.


Germany changed back to 19% tax rate

Hi @mpociot,
first of all thanks for the great project! I just wanted to mentioned that from 01.01.2021 Germany changed back to 19% instead of 16% tax rate. Could you please change the rate back. For now I rollback to version 2.4.0 until the rate is fixed.
Thank you
Cheers from munich

there is already an open pull request, i'm also waiting for it to be merged

there is already an open pull request, i'm also waiting for it to be merged

https://github.com/mpociot/vat-calculator/pull/102

https://github.com/mpociot/vat-calculator/pull/102

Will be in the next patch release, thanks.

Will be in the next patch release, thanks.


simple google map integration

We have several requirements about the google map integration from customers.
The basic implementation idea is
1.designing a dialog by which author can input the address details;
2.an backend OSGI service will search the address and get the lat lng informations via google service(the google api key and the api URL will be configured in OSGI console);
3.rendering a map image on the page according to the lat/lng info, and clicking on it will open the full google map in a new window;

I recommend we don't provide this.  Google has demonstrated that they're capable of pushing out breaking changes where features just simply disappear with no analog in revised API versions -- this makes trying to provide a one-size-fits-all integration rather a moving target.  We have bigger fish to fry.


Update screenshot

closes https://github.com/MicrosoftDocs/OfficeDocs-SkypeForBusiness/issues/8768

@MikePlumleyMSFT PR has been copyedited and is ready for final review, could you please check and merge? Thanks!


Overhaul TemplateProject

When starting a new client project in ReactNative we looked to this template and immediately noticed it was out of date. The biggest things this PR updates are the react-native version from 0.45 -> 0.57, the react-navigation version from 1.0.0-beta8 to 3.0.0 and the overall folder/file structure. Additionally we removed Redux.
The last part is up for debate. For this project, we'll be using Apollo instead and we've noticed a general trend in the Boston office (I can't speak for Austin) towards using GraphQL > Redux. It may be that we should remove cookiecutter in favor of a more yeoman style generator where we get to choose a router, state management etc.

 Overhaul TemplateProject


DNS query with small edns bufsize fail

According to https://tools.ietf.org/html/rfc6891#section-6.2.3 responder should round the 'UDP Payload Size' up to 512 (at least I think so). However, for values smaller than 12 Unbound returns SERVFAIL.
How to reproduce:
dig +bufsize=0 +edns  .
Expected  output:
DNS record for '.'
Acctual output:
SERVFAIL

There is an option to make unbound behave like this: harden-short-bufsize: yes in unbound.conf.
https://www.nlnetlabs.nl/documentation/unbound/unbound.conf/#harden-short-bufsize
But the default is 'off' for this option.  The default can be on if you think that is more compliant with the RFC.

There is an option to make unbound behave like this: harden-short-bufsize: yes in unbound.conf.
https://www.nlnetlabs.nl/documentation/unbound/unbound.conf/#harden-short-bufsize
But the default is 'off' for this option.  The default can be on if you think that is more compliant with the RFC.


Config option for blocking room ID and room alias server_name's

Basically we should be allowed to block client join requests for #bad_room:bad.server.name or !badroomid:bad.server.name if bad.server.name is blocked.
Useful if the server's primary or sole obvious purpose is for malicious activity, and banning each room alias/ID is pointless.

This is completed and I extended this into being a "global ACLs" feature that also extends to room invites, room joins, etc.
Unlike actual real server ACLs, this does not reject transactions, events, etc. This is only a way to stop things like room joins into obviously bad rooms. Room server ACLs should still be used and my "global ACLs" feature is not a replacement for that.


Roadmap list of issues/enhancements for Visual DICOM Browser

RoadMap (items are not listed in priority):
long-termENH:

[ ]  implementing send in C++ in CTK (i.e. adding ctkDICOMSendJob, ctkDICOMSendWorker and ctkDICOMSend with underlining DIMSE DcmStorageSCU). This would allow to use the background/parallel operations infrastructure for SEND as well.
[ ] add DICOMweb
[ ] handle jobs queue in the scheduler by file (so we can restart the jobs/workers at application restart)
[ ] add data streaming from visual browser series widgets to Slicer volume nodes.
[ ] add support for DICOM frame set (reference https://discourse.slicer.org/t/new-frame-set-table-in-the-dicom-database/35012)

UI customization:

[ ] visual DICOM browser (and in general CTK) uses Qpalette to change colors dynamically. This does not go well when customizing CTK/Slicer by styleSheet. Probably we should use the styleSheet approach everywhere. For example, the background yellow warning on filters does not work when applying a custom styleSheet. Discuss with Sam for a good design. Ideally the solution should:

use one unique style file containing the stylesheet for all the CTK classes
change color of qt widgets in CTK dynamically with the Property Selector, e.g.: https://wiki.qt.io/Dynamic_Properties_and_Stylesheets
custom Slicer apps should be able to change the style by simply rewriting and reloading the style file

Issues and minor ENH:
Logic:

[ ] add a writing lock static variable in the ctkDICOMDatabase class
[ ] smart managing of the inserts and memory when retrieving a series. i.e. we could have a customizable framesBatchLimit variable.
[ ] add infrastructure to set the maximum number of concurrent workers per server (now it is just per type of job).
[ ] the retry time delay value should be higher and exponential with a factor 2/3 (with some randomness), i.e. each subsequent retry should have a larger delay. Current default parameter is a fixed 100ms (not enough for a server to recover). Instead of using the Maximum number of retries (current default is 3), we should use the maximum waiting time (the one defined in the GUI in the server settings) -> timout warning in the UI (check the string if it is clear).
[ ] Automatic prefetch of the full series (now the current behaviour) could be disabled and the retrieve could it be done only when the selected series are manually loaded.
[x]  While waiting for download of a complete sequence, we can still do some user actions, but not all. I suspect that it is because we pump the event loop with app->processEvents(), but that might be unintentional. We might want to call processEvents with flags that disable user interaction, or even better, show a model popup with a "Cancel" button.
[x] Stopping/Deleting many jobs (>100) makes the scheduler hanging for ~2 sec. This because the deleting is done one job at the time and then a signal is emitted to queue new jobs. In Addition this methods are thread safe by a mutex which is expensive. Probably the best action would be to delete all the jobs togheter in only 1 call.
[x] The SCU release association (DCTMK) should be protected by a mutex, because the method in DMTCK is not thread safe and in past we had crashes for it. I had also to force the release of the association at cancel operation of worker for query and retrieve. This because the DCTMK cancel operation can fail (but returns always good() == true) and in some cases we can have eternal zombies workers. The release is done in the hanlde overriden methods of SCU.

Settings:

[x] servers should be in a "Servers" collapsible section, the same way as "Storage" (instead of the "Servers" label)
[x] Add debug option to activate the output from DCMTK (global logger to terminal).
[x] Style of "Apply changes" and "Discard changes" should be the same as Add/verify/remove host.
[x] Verify host: change response string. C-ECHO connection verified/failed.  Add a "Verification" column in the "Servers" table (unknown, in progress, success, failure). C-ECHO should be run in background by the scheduler (need to implement related job and worker classes).
[x] server settings should be more human readeable in the qt settings file.
[x] Change in the UI the column names Proxy and Protocol with additional Retrieve (Retrieve Proxy etc....)
[x] Apply warning yellow background to modified fields.
[x] MedicalConnection server node, should have the Query/Retrieve/Storage checkboxes to be checked as default.
[x] After clicking Apply, the row selection should be preserved
[x] Hide restore defaults button (it can be shown only for testing)
[x] Verify host should work on the current modified server settings (or it should be disabled until the user apply or discard the changes).
[x] MedicalConnection server node, should actually NOT have the Query/Retrieve/Storage checkboxes to be checked as default.
[x] verification column should be updated only from jobs which started after clicking the verify button.
[x] Closing the application while echo workers are running make it crash. steps: run a verify server with wrong parameters and a timeout of 30 sec. The destructor of the scheduler will wait only 10 sec (hardcoded). The destructor has to wait for all jobs closing properly (echo job will not terminate before the server timeout parameter).

Visual browser UI:
Patient selection:

[x] By default show all local content.
[x] Display patient name in "Patient information" section (while there are many patient names listed above, it is not that clear which one is actually selected; it is also not possible to select and copy-paste that name). Left-align field names and values (for example, "ID:" label is on the left - which is good; but then the actual ID value is floating somewhere in the middle of the screen).
[x] Hitting enter in a search field should run the query (same as clicking the search button)
[x] When hitting the search button, the patient list always jumps to the first patient, which is quite annoying, as I keep clicking it to see if new studies have become available for the current patient on the server. Current patient selection should not be lost if Search button is pressed (if the current patient is still selected by the search criteria).
[x] Patient selection is lost when showing/hiding the browser in 3D Slicer
[x] Having a shortcut to browser previous/next patient (Ctrl-tab/Ctrl-shift-tab) would be useful when working with a research PACS (where we are not find/explore data, without necessarily knowing patient name/id).
[x] study sorting by date, sometimes does not work. Verify the sorting.
[x] at least happened once: after pressing search, download of series started. Switched to a different patient, hourglass was displayed for a while and then the application crashed.
[x] When changing patient if there are TCIA datasets imported from local disk and there is the test server enabled (medical connection), the UI gets stuck and there is this message logged many times:
Failed to find patient with PatientsName= and PatientID=
[x] visual dicom browser does not have drop action (neither the old browser). In Slicer dropping a dicom folder will use the python code in DICOM.py and then use the old browser to import. If Slicer is using the new browser should import with the visual one.
[x] All the DICOM import from local disk were broken for the visual dicom browser when using it in Slicer. The issue was that several methods on the DICOM module UI were using directly the old browser. Refactored to call methods of the class DICOMbrowser.py. Then it is  the DICOMbrowser that take care of calling methods from the two browsers.
[x] importing multiple folders for the visual dicom browser is broken
[x] when importing in Slicer this logging should not happen:

D: DcmDataset::read() TransferSyntax="Little Endian Explicit"
D: DcmMetaInfo::checkAndReadPreamble() TransferSyntax="Little Endian Explicit"

This happens when detailed logging in DICOM settings is checked. It is logging printed by DCMTK. Detailed logging is already as default set to false.

[x] We need to be able to select the enabled severs on a patient basis.
[x] when importing local files, will be nice to select the tab with the imported patient.  If multiple, the last one

Filtering:

[x] when doing a search without filter (i.e. show all local database), if there is nothing in the local database, the yellow warning background fo the filter gets bugged (always on, even if doing a new search)
[x] Filter at the moment is both query and filter the local database (this could be confusing). Add an advanced menu under the query button to disable the query/retrieve.
[x] Filter local database could leave studies or patients empty (these should be filtered out). See also next two issues for more detailed info.
[x]  I don't get some updates (study list remains empty) when setting filter criteria to "Everything from last year". I see "ctkDICOMQuery: the number of responses of the query task at patients level surpassed the maximum value of permitted results (i.e. 25)." message in the log - can it be the root cause? Or maybe just that this filter does not filter out patients. It is confusing that some filter boxes filter patients, while others let all patients displayed, even those that don't have matching studies/series/modality/date.
[x] The logic behind "Study" and "Series" textboxes in "Patient search" section is not clear. If I type there something then still all the patients are shown, just studies or series list is empty. When the study filter is set then patients that don't have any matching studies should not show up. Similarly, those patients and studies shold not show up that don't have any series that matches the filter criteria.
[ ] Patients list as tabs in the tab control of the Patient widgets is not optimal. We should use the old widget from the ctkDICOMBrowser (first one, only the patient list). We could have an option to switch between them.

Thumbnails && series widgets:

[x] on right click menu we will need an addittion action: force redownload. (for series and studies)
[ ] additional feature for force download (add checkable settings, default False): if any study is 3 hours old (use DICOM study date), force redownload every time we use query (not for local search).
[ ] additional feature for force download: enable monitoring (right click action) for a time (configurable). If any series or instance in series gets uploaded in PACs, in this case, will be automatically fetched and the UI updated (some UI icons to give the warning that it is updating). For series, we should check also if new instances have been added in the PACs to the series.
[ ] additonal feature: add a check (when clicking the query/retrieve lense button) to a folder containing dicom files, if there are files import them and clean the folder. Create a lock file in the dicom folder and we put there the PID of the session of the user, when is accessing the DICOM files/deleting them.
Check also if using a watcher we can automatically do the import.
The local folder should be a "local connection", like a server. So we could add as many we want in the settings and everything will be automatic in the infrastructure (not adding hard coded specil cases, but everything will be independednt), it is just a new "protocol" comunications.
[x] right click delete name in the UI should be: delete from local database
[x] text: add transparent and improve shadows. Remove N.frames and put it as the third dimension on the rowXcolumns (e.g. 100x100x5). Elide the series description and put the full text in tooltip.
[x] thumbnails are quite low quality, which is visible when the image contains text or simple graphics - if there is an option to use higher-order interpolation and it is not much slower then it would be nice to switch to that
[ ] rendering for Segmentation DICOM object does not work with the ctk thumbnail class.
[ ] rendering of thumbnail can be expensive and currently is done in the main thread. It would be nice to do it in background (i.e. create ctkDICOMThumbnailJob and ctkDICOMThumbnailWorker classes)
[x] Selection in series list uses blue background. If the thumbnail image has rectangular shape then the blue text that is overlaid on the thumbnail is not readable (blue text on blue background). Maybe improving the drop shadow would fix it (to make it 4 directions instead of just 1, maybe larger offset).

[x] Wait and load selected series sometimes did not worked and the UI got stuck.
[ ] loading a series in visual dicom browser does not have the old advanced/examine UI
[x] after deselecting there is a white box around thumbnails in dark mode in Slicer
[x] on high resolution monitor, most likley the user has scaling not at 100%. This creates issues with the thumbnails text rendering.
[x] Study description should go in the ctk group title

Error report:

[x] Implement Job list status UI. See next two issues for more info.
[x] Error reporting is inconsistent. Most often I don't see any errors (just nothing shows up), but once an error message came up as a button. But then I could not remove that message. A nice solution would be to have a "Job list" button, which could show an error notification (red or yellow circle) on it when one of the jobs failed. Clicking on it the button would show the job list (it can be a popup or a collapsing section in the GUI) that would show all the jobs (in-progress and completed) along with its status (it can be just simple list, details shown as tooltip or popup; with an option to show all jobs or only in-progress jobs, a button to clear the completed jobs, a button to cancel the selected jobs, and a button to retry the selected jobs).
[x] Error message like "bc2343432-234241frfd-2342341s job failed to fetch data" is quite annoying. It should tell something like "Fetching data for patient John Doe [patientid] from server MedicalConnections failed. Response not received for 30 seconds. Click here to see more details." (clicking could open the job list with that task highlighted)
[x] we need to stream the DCMTK logging per each job to the Job list UI, this can be implemented by instantiating an Appender with a custom ErrorHandler to the SCU logger: DCM_dcmnetLogger (name: "dcmtk.dcmnet")
[ ] when loading a series, if it is not supported (or it is supported with an extension), we should fire a popup warning.
[x] big warning push button for failed jobs should be removed. We should have warning/error icons at patient/study/series widgets which should refer to the job in some way.
[x] then we could use the same icon on patient/study/series widget to know if we are waiting for the query (loading icon)
[x] also a refresh button to refresh the query for patient/study/series widgets (if everything was success, this can be useful to query new changes in the server)
[x] clearing jobs push buttons should be outside from filter group box
[x] clear completed push button, should also remove the current "cancel" one
[x] status: if the user stop the jobs,  status should be "user stopped"
[x] status: if the job is stopped because it failed, it should be "attempt failed" (if it will retry it) / "failed" (if it is the last attempt)
[x] When a request fails then it leaves 4 entries in the log: 3x failed attempts + 1x final failed attempt. This is too much noise (and if the user wants to retry he would need to pay attention not to retry all 4 entries, only 1). Could you change filtering settings so that the 3 failed attempts are not displayed by default? The simplest would be to only display the 3 failed attempts only if “Show completed” is enabled in filtering settings.
[x] Jobs and Settings group box should be encapsulated in one
[x] Having also a splitter between the main patients navigation widget and Jobs/Settings groups would be ideal.
[x] clicking a row in the job list should open the corrispettive patient widget in the main navigation widget.
[x] Details:1) do not put the separator if only one job is selected 2) separator should be either ----- or ==== (check DCMTK and use a different one) 3) do not put spaces before ":"

ctkDICOMVisualBrowser application:

[x] the folder selector does not reflect the actual DICOM database location (it seems that the button is not updated from application settings at startup)

Reference PR:

https://github.com/commontk/CTK/pull/1142
https://github.com/commontk/CTK/pull/1165
https://github.com/Slicer/Slicer/pull/7525
https://github.com/commontk/CTK/pull/1184
https://github.com/commontk/CTK/pull/1191
https://github.com/Slicer/Slicer/pull/7676
https://github.com/commontk/CTK/pull/1201
https://github.com/commontk/CTK/pull/1202
https://github.com/commontk/CTK/pull/1203
https://github.com/Slicer/Slicer/pull/7751
https://github.com/commontk/CTK/pull/1206

Huge amount of DICOM communication log is printed on the console. It can cause very significant delays, so the amount should be configurable (we can use DICOM/detailedLogging application settings value).

@lassoan  this should already work, please try to disable DICOM/detailedLogging in the Slicer settings.

Also, the messages should not be dumped to the console but it should be shown in the job list (maybe some messages, e.g., warnings/errors could be also logged in the application log)

yes I agree, this is also described in other points.

Error report is addressed in https://github.com/commontk/CTK/pull/1184.

[ ] Finalize and publish discourse post: https://hackmd.io/SFrAGE4CS8uSkI2YvDRKRg?both

[ ]  Finalize and publish discourse post: https://hackmd.io/SFrAGE4CS8uSkI2YvDRKRg?both

I have done my last edit. @lassoan it would be nice if you can review (specifically the intial sentence regarding the "patient exploration tool").

@lassoan, thanks for the text edits and I have applied yout comments in https://hackmd.io/SFrAGE4CS8uSkI2YvDRKRg?both.
I am going to post it now on the Slicer forum
@jcfr can you remove or replace the images and videos (see below for the new ones) in https://github.com/commontk/CTK/pull/1165#issue-2078249761, please? thanks in advance

https://github.com/commontk/CTK/assets/7985338/a0e362e7-858a-4e47-9298-8d00ae16a23b

I am going to post it now on the Slicer forum

Is the feature included in today's Slicer Preview Release? If not then please wait. Also, for biggest impact, it may worth making the announcement on Tuesday (many people are not at their computers in the weekend; Monday is often too busy). It would also allow us to do some internal testing with people we ask to have a look (Steve, Rudolf Bumm, ...).

Is the feature included in today's Slicer Preview Release? If not then please wait.

yes!

Also, for biggest impact, it may worth making the announcement on Tuesday (many people are not at their computers in the weekend; Monday is often too busy). It would also allow us to do some internal testing with people we ask to have a look (Steve, Rudolf Bumm, ...).

ops sorry, I should have waited, I have already posted https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874 . I can delete it if you think it would be better.

OK, no problem. There is some time before the weekend, so hopefully it will catch people's attention and they can find some time to try it and give feedback.

We can also add a follow post on the topic on Tuesday to bring it to the top of the list. Something along those lines:
Raw:
Now that the feature has been available :sparkles: for a few day through the Slicer `Preview` package, let us know if you have any comments or suggestions.

Thanks again for your time :pray:

Rendered:
Now that the feature has been available :sparkles: for a few day through the Slicer Preview package, let us know if you have any comments or suggestions.
Thanks again for your time :pray:

We can also add a follow post on the topic on Tuesday to bring it to the top of the list. Something along those lines:
Raw:
Now that the feature has been available :sparkles: for a few day through the Slicer `Preview` package, let us know if you have any comments or suggestions.

Thanks again for your time :pray:

Rendered:
Now that the feature has been available ✨ for a few day through the Slicer Preview package, let us know if you have any comments or suggestions.
Thanks again for your time 🙏

@jcfr @lassoan I was thinking that we may wait for the merge of https://github.com/commontk/CTK/pull/1184 (job list) to bring the post up to the list. Let me know.

for reference: current dev branch is at https://github.com/Punzo/CTK/tree/visualDICOMBrowserENH

Could you please do the one below?

Study description should go in the ctk group title

Could you please do the one below?

Study description should go in the ctk group title

sure!

Could you please do the one below?

Study description should go in the ctk group title

Done in https://github.com/commontk/CTK/pull/1206/commits/7dca0f3fa0d12b4730f9027caa5a7225785eeef2

I've been testing this and ran into an issue:

configure https://www.dicomserver.co.uk/ server
query using "a" in patient name
browse tabs, find a tab where there are a few normal-sized CT or MR scans
double-click on one of them => ERROR: it never loads
checked the job list, all jobs are cancelled
click the show/hide DICOM browser button to hide the browser and then click again to show it => ERROR: crash in ctkDICOMVisualBrowserWidgetPrivate::retrieveSeries() due to seriesItemWidget pointer is valid, but the memory position it points to contains a deleted object (dangling pointer)

I've been testing this and ran into an issue:

configure https://www.dicomserver.co.uk/ server
query using "a" in patient name
browse tabs, find a tab where there are a few normal-sized CT or MR scans
double-click on one of them => ERROR: it never loads
checked the job list, all jobs are cancelled
click the show/hide DICOM browser button to hide the browser and then click again to show it => ERROR: crash in ctkDICOMVisualBrowserWidgetPrivate::retrieveSeries() due to seriesItemWidget pointer is valid, but the memory position it points to contains a deleted object (dangling pointer)

ok, thanks for reporting. I will look into it now.

Thank you, I'm testing it now.

Thanks a lot for the fixes, there are no more crashes or hangs!
But. When I click the "Show DICOM database" button to hide the browser then it's get hidden in a 1 second, good. When I click the "Show DICOM database" button to show the browser then it takes about 1 minute for the browser to appear, with this call stack when I stop at random times:

It seems that thumbnails are regenerated every time I show the browser. Probably in release mode it would not be so bad, but still, it is a lot of unnecessary work.
It is possible that these thumbnails are regenerated because thumbnail generation failed. I see these on the console:
E: no pixel data found in DICOM dataset
Rendering of DICOM image failed for thumbnail failed: Missing attribute
E: no pixel data found in DICOM dataset
Rendering of DICOM image failed for thumbnail failed: Missing attribute
E: no pixel data found in DICOM dataset
Rendering of DICOM image failed for thumbnail failed: Missing attribute
E: no pixel data found in DICOM dataset
Rendering of DICOM image failed for thumbnail failed: Missing attribute
E: no pixel data found in DICOM dataset
Rendering of DICOM image failed for thumbnail failed: Missing attribute
W: DcmItem: Length of element (01f1,1055) is not a multiple of 8 (VR=FD)
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result
W: processing MR image ... applying modality transform may create unexpected result

It also seems that these generated thumbnail are not saved to disk.
I've also noticed that the thumbnails are generated on the main thread. Since thumbnail generation can be really slow (it takes 10 seconds for this DICOM SEG) it would be nice to do it in background threads.

@lassoan I have addressed the main issues with the thumbnails generation in https://github.com/commontk/CTK/pull/1206/commits/c015e3a45c811282acfb78cf5d873456eb7befd1, plus few minor issues :
PERF: Implement thumbnail storage to disk to avoid re-rendering after series widget destruction.
PERF: Disable SEG rendering in thumbnails due to limited support and potential performance issues. Replace with a blank thumbnail featuring a document SVG.
BUG: Resolve issue hanging job termination when status is 'Queued'.
BUG: Address issue with FreezeJobsScheduling during shutdown.
BUG: Correct retry functionality when status icon on series widget is clicked.

Still need to work on the background thumbnail creation - ran out of time. But don't worry, it's on the task list for this issue.. i.e.:
rendering of thumbnail can be expensive and currently is done in the main thread. It would be nice to do it in background (i.e. create a ctkDICOMThumbnailJob and ctkDICOMThumbnailWorker classes)
Feel free to test again, Thanks!

Two minor things to improve on the very latest DICOM browser improvements:

showing DICOM browser after it was hidden still takes about 5 seconds in debug mode (showing 25 patients from dicomserver.co.uk) - could we just show/hide the widget without rebuilding?
when I double-click on an image to load it and it stops retrieve of other series, then I get a bunch of "user stopped" jobs - OK. But then when I select all and retry then those "user stopped" jobs never go away. They seem to trigger some new jobs, but if those are successful then those stopped jobs still remain. It would be better to move them to a queued or in-progress state (they could maintain the entire job history, with all preivous errors, retries, etc.)
Maybe not an error, but those "user-stopped" jobs have various error, such as DUL Finite State Machine Error: No action defined, state 7 event 10 or Failed receiving DIMSE command: 0006:0205 DIMSE Caller passed in an illegal association but nothing indicates that the user cancelled these jobs (other than the Status: user-stopped). Is this normal?

Few minor things to improve on the very latest DICOM browser improvements:

showing DICOM browser after it was hidden still takes about 5 seconds in debug mode (showing 25 patients from dicomserver.co.uk) - could we just show/hide the widget without rebuilding?
when I double-click on an image to load it and it stops retrieve of other series, then I get a bunch of "user stopped" jobs - OK. But then when I select all and retry then those "user stopped" jobs never go away. They seem to trigger some new jobs, but if those are successful then those stopped jobs still remain. It would be better to move them to a queued or in-progress state (they could maintain the entire job history, with all preivous errors, retries, etc.)
Maybe not an error, but those "user-stopped" jobs have various error, such as DUL Finite State Machine Error: No action defined, state 7 event 10 or Failed receiving DIMSE command: 0006:0205 DIMSE Caller passed in an illegal association but nothing indicates that the user cancelled these jobs (other than the Status: user-stopped). Is this normal?
When in 3D Slicer the DICOM browser is opened the first time then a window pops up for a fraction of a second and then disappears. This could be probably prevented by adding the window to some layout when it is created and first shown (or only show it when it is actually needed).

I have addressed the latter and opened a PR for Slicer to update CTK version. The first 3 I will address them whne I will be back from vacation.

when I double-click on an image to load it and it stops retrieve of other series, then I get a bunch of "user stopped" jobs - OK. But then when I select all and retry then those "user stopped" jobs never go away. They seem to trigger some new jobs, but if those are successful then those stopped jobs still remain. It would be better to move them to a queued or in-progress state (they could maintain the entire job history, with all preivous errors, retries, etc.)
Maybe not an error, but those "user-stopped" jobs have various error, such as DUL Finite State Machine Error: No action defined, state 7 event 10 or Failed receiving DIMSE command: 0006:0205 DIMSE Caller passed in an illegal association but nothing indicates that the user cancelled these jobs (other than the Status: user-stopped). Is this normal?

Done in https://github.com/Punzo/CTK/commit/543b45f447257d6838cac3f1c65ba4e1771e0386
I will open a PR in CTK when I will have more ENH done

showing DICOM browser after it was hidden still takes about 5 seconds in debug mode (showing 25 patients from dicomserver.co.uk) - could we just show/hide the widget without rebuilding?

I could not reproduce the timing issue, I have 30 patients from dicomserver.co.uk and the show/hide does not lag. Using debug mode and detailed logging in DICOM settings:
https://github.com/user-attachments/assets/d5626ea5-777c-481c-87cc-d109eda42692
In fact, when showing the visual DICOM browser widget, Slicer calls only self.dicomVisualBrowser.onShowPatients() , which do not perfom any query/retrieve and builds only the UI of the current slected patient widget. In addition for the series widgets of the selected patient, it uses the stored png files. Maybe there was an image giving issues to the thumbnail generator, which is still done in the main thread. It would be nice to get such series, if you manage to reproduce again the issue.
Anyway it did not make sense to rebuild the UI of the visual dicom browser everytime. So now, I build it only once. Done in:
https://github.com/Punzo/CTK/commit/6bc59dc1e19ef5ff918779377a87da345013d3b6
https://github.com/Punzo/Slicer/compare/Slicer%3ASlicer%3Amain...visualDICOMBrowserENH

rendering of thumbnail can be expensive and currently is done in the main thread. It would be nice to do it in background (i.e. create ctkDICOMThumbnailJob and ctkDICOMThumbnailWorker classes)

Done in https://github.com/Punzo/CTK/commit/b9bc53df26c18ff79d85260f71514b6c83c0fb3e
this should also fix the 5 sec issue of the previous post:

showing DICOM browser after it was hidden still takes about 5 seconds in debug mode (showing 25 patients from dicomserver.co.uk) - could we just show/hide the widget without rebuilding?

current PR: https://github.com/commontk/CTK/pull/1217
ENH: Refactor and clean up manual retry infrastructure
ENH: Add job status logging to the detail logging window
ENH: Enable thumbnail generation in worker processes
BUG: Fix missing update of server settings UI
BUG: Add missing Python wrapping methods for ctkJobDetail
ENH: Enhance job logging for better traceability
PERF: Optimize UI updates by directly calling component slots

To Do: Fix perfoamnces issues when alloccating hundreds of jobs. In this case the:
QMutexLocker locker(&this->QueueMutex);
is a bottleneck.
Strategy 1:
Investigate all the current QMutexLocker. Are all really needed?
Strategy 2:
substitute  QMutexLocker with QReadLocker and QWriteLocker.
Strategy 3:
Use tbb::concurrent_hash_map instead of a QMap if TBB is available (#ifdef). If not
Strategy 4 (only if the other strategies fail):
We could drop the QThreadPool and instatiating QThreads by ourselves.
Each QThread would have his own jobs/worker map (for each job there is a worker) and we would not need to lock anything. In this case, the scheduler would need to handle the load balacing of the threads.


ERROR: "<EMAIL_ADDRESS>could not be built.

Am using the skypack.dev CDN and I keep getting this issue. Their CodePen demo also shows this error. This issue started  around  2:30pm GMT.

Same here with:
        @livewireScripts
        <script<EMAIL_ADDRESS>data-turbolinks-eval="false" data-turbo-eval="false"></script>
        @stack('scripts')

Can't replicate this when building using esbuild on a fresh local Rails 7 app. Maybe just a skypack issue?

HTTP response from https://cdn.skypack.dev/@hotwired/turbo indicates a build error... not sure how that is triggered and if it's an internal skypack problem
/*
 * [Package Error] "<EMAIL_ADDRESS>could not be built.
 *
 * No build output found.
 *
 * How to fix:
 *   - If you believe this to be an error in Skypack, file an issue here: https://github.com/skypackjs/skypack-cdn/issues
 *   - If you believe this to be an issue in the package, share this URL with the package authors to help them debug & fix.
 *   - Use https://skypack.dev/ to find a web-friendly alternative to find another package.
 */

console.warn("[Package Error] \"<EMAIL_ADDRESS>could not be built. ");
throw new Error("[Package Error] \"<EMAIL_ADDRESS>could not be built. ");
export default null;

Yes this is why I have also notified them here:
https://github.com/skypackjs/skypack-cdn/issues/319
Thanks again.

Is there a way to re-trigger the build - seems this occurred w/ the latest commit https://github.com/hotwired/turbo/commit/530bde2fd9beb6f62837683ffa0d60192f508c1f

I think Skypack needs to re-trigger a build from their side, as everything seems fine from the Turbo side of things.
Alternatively, you could temporarily switch to one of the other CDNs:
https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>https://ga.jspm.io/npm<EMAIL_ADDRESS>

Its working now, thanks guys!


Question and Suggestion

Change Type
Addition
Proposed Changes
I came to the github link directly from a post in the Svelte Discord. I tried looking at the readme but I couldn't find the documentation site. Finally I found runed.dev in some sample code. It would be great to add a link to that in the readme.md
Quick question, why is the naming of the runed utilities all over the place.
In some cases you use useXYZ in some cases you use PascalCasing like MediaQuery or ElementRect or some cases its camelCase isMounted()
Just curious the reasons.

Quick question, why is the naming of the runed utilities all over the place.
In some cases you use useXYZ in some cases you use PascalCasing like MediaQuery or ElementRect or some cases its camelCase isMounted()

Trust me, we exhausted bikeshedding the naming convention for the various utilities. It's not 100% set in stone, but here's the general idea behind it and how to think of the different casings:

PascalCase - reactive classes and must be instantiated with new Thing()
camelCase (activeElement) - reactive global objects that can be imported and whose value can be accessed with .current, no need to instantiate
useXYZ - usually wrap functions or use is prefixed to avoid conflicting with a DOM API (IntersectionObserver, ResizeObserver), etc.

I'll also see if @TGlide wants to provide any additional mental models/context here to help justify.


No module named 'requests' when importing

After I installed using the PyPI distribution with poetry add ebay-rest==0.0.13, I get an error trying to import API.
>>> from ebay_rest import API
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/paul/Library/Caches/pypoetry/virtualenvs/eggregator-6gqTu4MM-py3.9/lib/python3.9/site-packages/ebay_rest/__init__.py", line 1, in <module>
    from .a_p_i import API
  File "/Users/paul/Library/Caches/pypoetry/virtualenvs/eggregator-6gqTu4MM-py3.9/lib/python3.9/site-packages/ebay_rest/a_p_i.py", line 14, in <module>
    from .token import ApplicationToken, UserToken
  File "/Users/paul/Library/Caches/pypoetry/virtualenvs/eggregator-6gqTu4MM-py3.9/lib/python3.9/site-packages/ebay_rest/token.py", line 6, in <module>
    from requests import codes, post, Response
ModuleNotFoundError: No module named 'requests'

This was fixed by manually installing requests but it would be nice to include it in the package dependencies.

Paul, thank you for the recommendation.
The file setup.cfg now contains the following section.
install_requires =
certifi
python_dateutil
requests
selenium
six
urllib3
You could run the following to get the new release and install any missing dependencies.
pip3 install --upgrade ebay_rest


Failed to update my forked repository to the latest master branch.

I migrated Apollo master branch to the latest version according to the document Migrate to Apollo master from old versions. The migration task was completed successfully.
But when I updated my forked repository with thegit push -f origin master command, the following error occured:
open /home/davidhopper/code/apollo/docs/specs/Camera/images/Argus_Specs1.png: no such file or directory
error: failed to push some refs to 'git@github.com:davidhopper2003/apollo.git'

My remote repositories are shown as follows:

How can I solve it? Thank you.
System information

OS Platform and Distribution (e.g., Linux Ubuntu 14.04): Linux Ubuntu 16.04
Apollo installed from (source or binary):  source
Apollo version (1.0, 1.5, 2.0, 2.5, 3.0):  > 3.0, latest master branch

@natashadsouza Thanks for your reply. The build process was successfully completed. I got the above error when I forced updating the local master branch  to my forked repository. In other words, I couldn't update the master branch of my personal forked repository with the latest apollo master branch.

@davidhopper2003 Try this
git lfs fetch --all before git push. I just updated my fork successfully without deleting the repo.

please run git lfs fetch --all before git push to resolve the issue.