Enforce mvn version

Travis CI is using an older version rather than required for mvn.
Use enforce maven plugin in pom file in order to ensure that required mvn version is used.

Current coverage is 10.49% (diff: 100%)

Merging #129 into devel will not change coverage

@@              devel       #129   diff @@
==========================================
  Files           649        649
  Lines         24688      24688
  Methods           0          0
  Messages          0          0
  Branches       2761       2761
==========================================
  Hits           2590       2590
  Misses        21846      21846
  Partials        252        252

Powered by Codecov. Last update dcb977d...f703b07

@sergio-alonso I need to be sure you signed our SLA before I can merge the PR.

@gortiz I have just signed the SLA.


[Diagnostics] Do more checking before recording force downcast fix

Solver should do more checking upfront before recording
force downcast fix, to make sure that it's indeed always
applicable when recorded, otherwise it would be possible
to misdiagnose or omit diagnostics in certain situations.
Resolves: rdar://problem/65254452

@swift-ci please test

Build failed
Swift Test OS X Platform
Git Sha - b47698bd544af93e0e55736a97f77828bcd4deb1

@swift-ci please test macOS platform

Build failed
Swift Test OS X Platform
Git Sha - b47698bd544af93e0e55736a97f77828bcd4deb1

@swift-ci please test macOS platform


Improvements

add transaction for creation of log and actual inc/dec in order to make it atomic.
Log creation will happen in a single query now.

@SSEsmaeeli This in on the queue

resolving comment,
update to the main branch
test against laravel 11 which is now set in the main branch

Done.

Done.

well done!


Autoreload on file change or on evalutation

Is it possible to autoreload or auto-reset when a file changes, or when form is evaluated in a namespace?

The closest would be to call (user/refresh) from the REPL.

Yeah, you'd have to call it explicitly when you want the REPL state refreshed.

Is it possible to have this called on file change, or when something is evaluated in the repl?

Generally, that wouldn't be the desired behavior. You shouldn't have to reload the entire REPL state any time you evaluate something in the REPL. Typically, it's best to do a full reload explicitly with a command instead of having it run automatically as it's a slower operation and it can break the REPL state if files aren't in a good state.

This is more of a reitit problem that. Once routes are defined the handler is bound to the route. Even if you recompile handler function, reitit will still use the old one.
One workaround is that you define your routes to use functions.
For example, instead of the following:
(defn ui-routes [_opts]
  [["/" {:get home}]
   ["/clicked" {:post clicked}]])

you wrap your handlers with function in your route definitions
(defn ui-routes [_opts]
  [["/" {:get #(home %)}]
   ["/clicked" {:post #(clicked %)}]])

This is not elegant, but it works.
The right fix would be to implement a suggestion from reitit directly in kit.

I think that would be a useful change to make. @nikolap thoughts?

Great find and makes sense to me, thanks for the research and recommendation.
Would welcome a PR. Else I can look at it in late-July.

Haven't forgotten this issue! Only just found the time to look at it :)

Do we still need to figure out a fix here?

I haven't tested master, but for my day to day workflow I still need to reset on each and every change.

@yogthos @nikolap What do y'all think the level of effort might be to get this working for kit? I'm almost certain luminus autoreloaded after repl evals, and I would find this really valuable for fast feedback and pace of development. I don't know if it's something I could contribute, and that's why I ask the difficulty level.

I think it should be relatively straightforward.  We could add a profile based flag in system.edn to let us know whether we're initializing the system in dev or prod mode. Then the multimethod for the router could use the flag to decide whether to initialize the router as a function or not. These should be the only changes needed.

Doesn't Kit by virtue of being based on Integrant adhere to the reloaded workflow school? I.e. you explicitly synchronize the whole system with the contents of source files on disk (using reset) instead of relying on traditional Lisp piecemeal reevaluation? Apart from the reitit handlers other functions referenced from the system map (such as query-fn, and I have several other components whose instances are funs) will also point to previous references even if you reevaluate them no?
I wasn't aware of this when I first started using Kit (and I haven't used Component) so I was a bit confused when I first started using Kit, but now I think that just binding a key to (reset) works quite well (though it admittedly takes a few of seconds on my system to suspend and resume)

@gerdint I will take a moment to read the blog you provided in full. I am very open to adjusting my workflow expectations. If I have to call (reset) from the REPL, and there are good advantages to that, then no problem!
@yogthos If there are benefits to how things are, perhaps it's only worth a small documentation update to educate users like me on the virtues of this workflow. I think if I hadn't expected the workflow to be like other lisps and Luminus, I would've moved on without a second thought.

@gerdint @nackjicholson yup, reloading the routes won't help with other components, so you'd still need to do (reset) whenever those change. Having the router reload automatically could potentially add confusion to the workflow since sometimes things will work as expected and sometimes not.
The main advantage of the reloaded workflow is that it avoids having stale state. One problem that can often happen with the regular incremental loading workflow is that the REPL state gets out of sync with the source. For example, you add a function and eval it, then you delete it from the file. The function is still in the REPL runtime and stuff using it keeps working. So you don't realize you broke anything until you restart the REPL. Reloaded workflow avoids this problem by nuking the REPL state and rebuilding it when (reset) is called.
My approach has been to do incremental work in the REPL for the most part, and then run (reset) when I want to test all the changes up to the API level. I find I also tend to add helpers like the following in the user ns:
(defn api-ctx []
  {:query-fn (:db.sql/query-fn state/system)})

So, then when I'm working on controllers from the REPL, I just pass (user/api-ctx) to them to simulate calling them from the router. For the most part I find my workflow hasn't changed from Luminus all that much. The only time reset is needed is when changes to one of the components managed by the integrant is needed. Most of the time that's when you change routes, or db queries.
Adding some docs on the workflow is definitely a good idea. I'll add an issue for that.

Reloading components and redefining a route handler are two different things. I agree that (reset) is a good idea when defining a new or changing an existing component or it's config. On the other hand, redefining a handler function of an existing route in REPL should just work in development, since it's just a function, and not a component with it's own state.

I think the added convenience of being able to see changes reflected as you update the handlers is likely worth it. My vote would be to add the convenience for dev along with a bit of documentation on the REPL workflow which I've made an issue for already.

On this sort of same note I think it would be nice if HugSQL query defintition files (the .sql ones) also were not cached in dev (i.e. a simple save of the file should have Kit use the new queries without having to reset the component). This is in-line with the change we did for Selmer templates the other week I think.

That's a good idea. Perhaps we could update kit-sql-conman to use a similar trick that Reitit uses where we can evaluate a function on each call in dev mode and load queries once for prod.

https://github.com/ring-clojure/ring/blob/master/ring-devel/src/ring/middleware/reload.clj
https://ring-clojure.github.io/ring/ring.middleware.reload.html
This works in some use cases.

The main caveat with reload middlware is that it won't reload the components such as routes or sql queries. If there is interest, it might be easy enough to make a Kit specific version of this middleware that would also trigger Integrant system reload when it detects file changes. That way the system would always be in a clean state.


Add typer CLI and yaml file support to tvla script.

Default configurations are specified in yaml file and
it is possible to overwrite them over command line interface.
This is provided by typer library. It also provides descriptions
when typed --help. Updated configurations are written into
a .yaml file after analysis.
Signed-off-by: Abdullah Varici<EMAIL_ADDRESS>

Can you test the entire functionality? Because I don't know with which configurations we should test it.

Fixed the issue when overwriting a configuration from True to False and force-pushed.

CLI is changed a bit. New usage:
./tvla_run.py [options] run-tvla
If the cfg file is not provided, it will use the default options (you can see them by typing ./tvla_run.py --help) and if you provide --update-cfg-file option it will either update cfg-file or create a new one if it is not provided.

I considered this in more detail, and I think it does not yet do quite what we want -- or at least the code could be streamlined to implement what we want. I could be wrong, but let's clarify this.
First, do we agree that argument/parameter values should be determined by the following flow:

In the Python code, we specify a sane default value for each argument. That default value is defined once and it appears in the help message so it is transparent to the user.
When run, the TVLA script tries to load a config file. The path of that config file is given by the command-line argument or the default specified in the code.
2.1. If the config file does not exist and the path comes from the default value, nothing happens.
2.2. If the config file does not exist and the path comes from a command-line argument, an error is raised and execution is aborted.
2.3. If the config file exists, its values are loaded. Any values defined in the configuration file override the defaults specified in the code (except for the path to the config file, which has already been decided).
Command-line arguments have the "final word" and override any values that have been decided before.

What do you think?
(From how I understand the code, I think it does almost that but not exactly.)

I've forgot a bit about this. I think we want should verify correct functionality of the following argument combinations before merging this:
AES specific:

Single step, save intermediate results and histograms: -d -o OUTPUT_FILE
Single step, load trace file: -t TRACE_FILE
Single step, load trace and leakage file: -t TRACE_FILE -l LEAKAGE_FILE
Single step, load trace, leakage and t-test file: -t TRACE_FILE -l LEAKAGE_FILE -a TTEST_STEP_FILE
Single step, load trace, leakage and histograms  -t TRACE_FILE -l LEAKAGE_FILE -i INPUT_FILE
Stepped, save intermediate results: -n 10 -d
Stepped, load t-test file and produce figures only -n 10 -a TTEST_FILE -f
Stepped, load intermedaite results, round 10 only: -n 10 -a TTEST_FILE -f -r 10
Stepped, save intermediate results, round 10 only: -n 10 -d -r 10
Stepped, load intermedaite results, round 10 only: -n 10 -a TTEST_FILE -f -r 10 (same as above but also check if all rounds were saved but just one is loaded)
Stepped, load intermedaite results, round 10 only and byte 9 only: -n 10 -a TTEST_FILE -f -r 10 -b 9
Stepped, save intermediate results, round 10 only and byte 9 only: -n 10 -d -r 10 -b 9
Stepped, load intermedaite results, round 10 only and byte 9 only: -n 10 -a TTEST_FILE -f -r 10 -b 9 (same as above but also check if all bytes were saved but just one is loaded)

AES general:

Stepped, save intermediate results: -n 10 -d -g -m aes
Stepped, load t-test file and produce figures only -n 10 -a TTEST_FILE -f -g -m aes
Stepped, save intermediate results, use subset of traces only, produce figures: -n 10 -d -g -m aes -f -s 1000 -e 100000 (may need to change numbers to something more reasonable)

KMAC general

Stepped, save intermediate results: -n 10 -d -g -m sha3
Stepped, load t-test file and produce figures only -n 10 -a TTEST_FILE -f -g -m sha3

Are there others? Please add them to the list.

I have rebased and force-pushed the PR. @vrozic is testing various combinations which @vogelpi mentioned above. And I think it would be a good idea to create a seperate PR to extent test/tvla_test.py to check different cases since this PR is already big enough. Would it be OK for you @andreaskurth?

Yes, I agree with merging this as soon as the correct functionality of the cases specified by @vogelpi has been confirmed (manually). We can then create separate PRs to automatically test those cases in CI


refactor: Rename Sql2Cypher to SqlToCypher.

Closes #153

Oh hi @lukaseder If you try this out, it would be lovely and terrifying all together at once :)

I'll be looking out for specific questions, probably won't look into it until then, though.

Thanks a lot in advance, much appreciated 💚


⚠ Bofrost.es has degraded performance

In 5d3a709, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1578 ms

Resolved: Bofrost.es performance has improved in 2b5df22 after 8 minutes.


fix: prevent hidden files being ignored by npm pack (https://github.com/tchen-l/generator-vite-react-layout/issues/1)

https://github.com/tchen-l/generator-vite-react-layout/issues/1


Please invite me to the GitHub Community Organization

Please invite me to the GitHub Community Organisation.

Name: Hernando Guzmán

Discord Username(if exists): Hernando Guzmán#3014

Additional Context:

I found Eddie on YouTube and I became interested in learning how to contribute in the open source community, I think is a great way to practice and consolidate skills and a great way to meet awesome people and network! 🎉

:nerd_face:

Invitation sent for the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see, you can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/EddieJaoudeCommunity/people
Tips for practising:
Customise your GitHub profile, here is a live stream on it https://www.youtube.com/watch?v=cT6GXCuS0Zo
Practice repo, instructions on how to add your name to the README in the README https://github.com/EddieJaoudeCommunity/hacktoberfest-practice
Remember contributing to open source is not just about code, its about collaboration, communication and adding value
I hope that helps

Invitation sent for the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see, you can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/EddieJaoudeCommunity/people
Tips for practising:
Customise your GitHub profile, here is a live stream on it https://www.youtube.com/watch?v=cT6GXCuS0Zo
Practice repo, instructions on how to add your name to the README in the README https://github.com/EddieJaoudeCommunity/hacktoberfest-practice
Remember contributing to open source is not just about code, its about collaboration, communication and adding value
I hope that helps


Derive ObjectSchema from class

Hi, Just getting around to using this library and loving it so far.
What I need to achieve is to constrain my ObjectSchema with a class.
Take the following class:
export declare class Config_PowerConfig {
  isPowerSaving: boolean;
  onBatteryShutdownAfterSecs: number;
  adcMultiplierOverride: number;
  waitBluetoothSecs: number;
  ...
}

I am able to constrain the property name like so:
type PowerConfigRecord = Record<
  keyof Config_PowerConfig ,
  any
>;

However I have so far been unsuccessful at inferring the type of the field from the data type on the class.
Is there any way currently that this can be achieved?
Thanks.

Thank you for the hint. I'll check and improve this in the next few days.

I think I have not fully understood your problem. Can you explain it with Valibot code? How does it currently behave with other libraries such as Zod?

Is there still interest in this issue? Otherwise I would close it.

Sorry, have been very busy.
I have made the following (It's still very WIP):
type PrimitiveToSchema<K> = K extends string
	? StringSchema
	: K extends number | bigint
	? NumberSchema
	: K extends Enum
	? EnumSchema<K>
	: K extends string[]
	? ArraySchema<StringSchema>
	: K extends number[]
	? ArraySchema<NumberSchema>
	: ObjectSchema<ConvertToSchema<K>>;

type ConvertToSchema<T> = {
	[K in keyof T]: PrimitiveToSchema<T[K]>;
};

export type ClassToSchema<T> = ObjectSchema<ConvertToSchema<T>, undefined, any>;

//////////////////////////////////////////////////////////

class MyClass {
	property1: string;
	property2: number;
	property3: string[];
}

const schema:ClassToSchema<MyClass> = object({
	property1: string(),
	property2: number(),
	property3: array(string()),
})

It will provide type checking and autocomplete based on the properties and types from the class.


ATT timeout worker not canceled by destroy, and may operate on disposed object

If att_timeout is envoked after a destroy, the "att" structure fetched from the work item has become invalid. This in turn causes an assertion in bt_conn_index via gatt_ccc_conn_unqueue.
The solution seems to be to cancel the delayed work when destroying the att data.
To Reproduce
Steps to reproduce the behavior:

Have an outstanding att request somehow racing with a disconnect/destroy
Wait 30 sec
Assertion in bt_conn_index (conn pointer points to top of att_slab)

Expected behavior
No assert on timeout
Impact
This is seen multiple times on v2.2 branch, in vendor configuration, and considered a show stopper.
Temporary solution in vendor 2.2.1 branch is to cancel work on destroy. It does not appear (from code inspection) to be fixed on master.
NOTE: On second thought, it's probably not enough to do the extra work cancel on disconnect, if this is a race...

Updated text to reflect that it is more likely to be a "destroy" scenario, than a "disconnect" scenario. No hard evidence found yet to make this more clear, but I will update if we're able to obtain the information.

@Vudentz could you please take a look at this one?

@kapedev, please also review and update with your latest findings. I believe this issue may be v2.2-only.

@kapedev, please also review and update with your latest findings. I believe this issue may be v2.2-only.

@kapedev any updates on this? It would be very useful to know if this only affects 2.2 or is an issue in master.

An important observations was that when we hit the assert in bt_conn_index, the value of the handle bt_conn *conn was the value of an att_slab instead of a valid bt_conn pointer.
On 2.2, the bt_conn handle is stored in the very top of the att_slab that contains the handle. The k_mem_slab_free will overwrite the first word of the att_slab with a pointer to the next free slab, when freed. This leads me to believe that what we are seeing is a use-after-free type error.
From our trace, we know that the assert call stack ends with gatt_ccc_conn_unqueue() --> bt_conn_index(). I have gone trough the callee's of gatt_ccc_conn_unqueue and my suspicion falls on the posibility of the  rtx_work delayed work which will execute the following
l2cap_rtx_timeout(struct k_work *work)
bt_l2cap_chan_del(struct bt_l2cap_chan *chan)
bt_att_disconnected(struct bt_l2cap_chan *chan)
bt_gatt_disconnected(ch->chan.conn);
gatt_ccc_conn_unqueue(conn);
bt_conn_index(bt_conn *conn)
Assert
If a channel has been destroyed (Free'd) without canceling the delayed rtx_work, then the above sequence would lead to a use-after-free.
The destroy function of a channel depends on how l2cap_chan_add was called during the creation of that channel.
For fixed channels it is bt_att_destroy
For others it is l2cap_chan_destroy
Only l2cap_chan_destroy calls cancel on rtx_work. So my suspicion is that rtx_work is run after a fixed channel has been destroyed. However, @Vudentz has informed me that this should only happen on dynamic channels.

@Vudentz could you provide some feedback on @klauspetersen comment?

@Vudentz ping

@mtpr-ot and @klauspetersen have you done any further investigation on this?

@Vudentz and @klauspetersen should we look at fixing this in time for 2.5?

@Vudentz and @klauspetersen should we look at fixing this in time for 2.5?

@joerchan please check if this is already fixed or will be fixed by an existing PR.

@joerchan please check if this is already fixed or will be fixed by an existing PR.

@mtpr-ot and @klauspetersen have you done any further investigation on this?

I have not pursued this further. We hacked a small fix that made sure to cancel all delayed work, also any work remaining on rtx_work. We have not seen the issue since, but it was a very hard bug to reproduce in the first place.

@mtpr-ot and @klauspetersen have you done any further investigation on this?

I have not pursued this further. We hacked a small fix that made sure to cancel all delayed work, also any work remaining on rtx_work. We have not seen the issue since, but it was a very hard bug to reproduce in the first place.

@klauspetersen Would you mind sharing the "hack" you did that supposedly fixed the issue.
As far as I can see the delayed work is canceled in this case, but due to the way delayed work behaves a cancel is not guaranteed to succeed. It appears that ATT handles the case where the Timeout handler is invoked before the disconnected handler, by unassigned the L2CAP conn pointer, which prevents the disconnected handler from being invoked at all.
However if the disconnected handler is invoked first, and then the timeout handler the timeout handler will be run on an already detached ATT channel. In this case memory has been freed, and pointers assigned to zero, but not checked, this will lead to crash.
This is similar to the fix here:  https://github.com/zephyrproject-rtos/zephyr/pull/30655, the same fix should be applied to ATT timeout and ATT disconnected handlers.
As far as I can see the issue is the same on both master and 2.2.0 branch, but the rest of ATT is quite different so the crash would likely be different, and the fix is not easily backported to 2.2-branch.

@klauspetersen Would you mind sharing the "hack" you did that supposedly fixed the issue.
As far as I can see the delayed work is canceled in this case, but due to the way delayed work behaves a cancel is not guaranteed to succeed. It appears that ATT handles the case where the Timeout handler is invoked before the disconnected handler, by unassigned the L2CAP conn pointer, which prevents the disconnected handler from being invoked at all.
However if the disconnected handler is invoked first, and then the timeout handler the timeout handler will be run on an already detached ATT channel. In this case memory has been freed, and pointers assigned to zero, but not checked, this will lead to crash.
This is similar to the fix here:  https://github.com/zephyrproject-rtos/zephyr/pull/30655, the same fix should be applied to ATT timeout and ATT disconnected handlers.
As far as I can see the issue is the same on both master and 2.2.0 branch, but the rest of ATT is quite different so the crash would likely be different, and the fix is not easily backported to 2.2-branch.


:seedling: Container build wf only run for upstream

The container build wf should only run for upstream repo

/cc @tuminoid

/override metal3-centos-e2e-integration-test-main  metal3-ubuntu-e2e-integration-test-main


Appstudio update mvp-test-component

Pipelines as Code configuration proposal

Pipelines as Code CI/mvp-test-component-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
7 seconds
init

✅ Succeeded
16 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
12 seconds
sbom-json-check

✅ Succeeded
24 seconds
deprecated-base-image-check

✅ Succeeded
16 seconds
clair-scan

✅ Succeeded
58 seconds
clamav-scan

✅ Succeeded
9 seconds
sanity-inspect-image

✅ Succeeded
7 seconds
sanity-optional-label-check

✅ Succeeded
6 seconds
sanity-label-check

✅ Succeeded
4 seconds
show-summary


Use second optional positional attribute (target) as generated-file-name

Closes #48

@Mogztter i've adapted and copied two tests where the second positional attribute was used to have tests with empty and given diagram-name.

Thanks for your contribution. Greatly appreciated :+1:


Workflows (possibly tools) cached through logout and login via google

Bug Report
Expected behaviour
Should see workflows for user 2 after logging out using user 1 and logging in via user 2
Actual behaviour
After switching logins to user 2, see workflows for user 1, but I can't interact with them presumably because I have no rights.
Steps to Reproduce
Basically as described, although note the need for step 3:

Logout and Reload, to start from a clean slate
Login as user 1
Click on My Workflows
Logout
Login as user 2
Open Chrome Dev Tools
Click on My Workflows. You'll see a 403 error for https://staging.dockstore.org/api/users/{wrong user}/workflows

┆Issue is synchronized with this JIRA Story
┆Issue Number: DOCK-77

A bit of a smoking gun, the GUI calls https://staging.dockstore.org/api/users/{wrong user}/workflows but calls https://staging.dockstore.org/api/users/{correct user}/workflows after a hard refresh

Update: In https://github.com/dockstore/dockstore-ui2/blob/develop/src/app/myworkflows/my-workflow/my-workflow.component.ts#L112, the subscription is receiving the previous user. Still trying to figure out why/how, so then it calls https://staging.dockstore.org/api/users/{previous user}.
In my tests, it sends the token of the new user, so I always see the call fail, and so no workflows show.
Will continue to investigate.

I changed something with the user recently, branch off a recent develop and see if that still occurs

@garyluu Still happening with latest develop.

:disappointed:

Update 2: More than one instance of UserService is being created, and that's what's leading to the problem; the code would work if UserService were a singleton. I believe this has to do something with modules and lazy loading. Investigating using forRoot(), but still coming up to speed on it.

Looks good with
DockstoreAPI - 1.5.0-beta.5
DockstoreUI - 2.2.0-beta.4


trigger the tests  #issue-6476

Description

Related Issue

Fixes <issue_link>

Motivation and Context

How Has This Been Tested?

test environment:
test case 1:
test case 2:
...

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Technical debt
[ ] Tests only (no source changes)

Checklist:

[ ] Code changes
[ ] Unit tests added
[ ] Acceptance tests added
[ ] Documentation ticket raised:

:boom: Acceptance test localApiTests-apiSpaces-ocis failed. Further test are cancelled...

The related fix has been merged.


Something wrong with like button if I hovered

Something wrong with like button, if I hovered its recolor to orange, and it has a big area and its background is orange color.

My like button doesn't go orange when I hover it. Weird.

Having the exact same issue.


WIP: Fix MINC read/write to convert from/to RAS coordinate system

Convert the coordinate system from RAS to LPS during MINC loading, and convert back on writing.
Also adds a setting to keep old configuration, so that MINC-based ITK tools (EZMinc) can maintain their original configuration and return sensible coordinate values in MINC-space.
Paging @vfonov

Originally discussed at https://insightsoftwareconsortium.atlassian.net/browse/ITK-3503?attachmentSortBy=fileName

What about minc transform?

@vfonov I have the code for converting the MINC affine to from RAS to LPS, I was going to do a seperate PR.

@vfonov MINC vs ITK also defines its transforms in opposite directions, do you want that added to the reader, or leave that to the user?

I have added the conversion for Affine transforms.
I'm not quite sure where to add the switch to disable this conversion to support backwards compatibility.
Can anyone give some guidance here?

My transform work isn't right. It used to be combined with inverting the affines so that MINC and ITK transforms went in the same direction. I backed that part out and this needs some fixes as a result.

one of the main reason for me to have minc interface for ITK is to be able to run ANTs & Elastix. I think we should run extensive checks to make sure that this conversion does not screw up their results.

Totally agree. On the walk home I wrote up a bunch of tests in head to ensure this works properly. Will enumerate later.

Given two files, in both MINC and NIFTI format (converted using mnc2nii)
Tests to do:

minc-to-minc affine registration with antsRegistration

nifti-to-minc "

minc-to-nifti "

bestlinreg minc-to-minc

save transforms as both ants and minc format

apply all transforms using antsApplyTransforms

apply minc-style transforms with mincresample

Sounds like a plan

Additional tests:

antsRegistration SyN to produce nonlinear
save as minc/nifti
confirm forward/reverse transformations also work as expected with antsApplyTransforms and mincresample
nlfit to produce nonlinear
confirm forward/reverse work with antsApplyTransforms

nlfit <-> antsApplyTransforms probably will not work.

PR https://github.com/InsightSoftwareConsortium/ITK/pull/194 addresses the issue with  MINC NLIN transforms only being generated one-way and ITK not properly handling the invert flag on such transforms.
Still remaining is I need to figure out an efficient method to voxel-wise multiply the incoming grid file by (-1,-1,0) to flip the RAS vector components to LPS vectors.

Thanks @dzenanz I have removed the extraneous Fills.

@thewtex that's what I'm asking? how do I go about checking that locally :)

@gdevenyi ah, turn on BUILD_TESTING in your ITK build's CMake configuration, re-build, then run ctest from the build tree.

All the test are failing with errors like this, with can't read a file.
/scratch/ITK-build/bin/ITKIOMINCTestDriver "--compare" "/scratch/ITK-build/ExternalData/Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc" "/scratch/ITK-build/Testing/Temporary/t1_z+_ushort_trans.mnc" "itkMINCImageIOTest4" "/scratch/ITK-build/ExternalData/Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc" "/scratch/ITK-build/Testing/Temporary/t1_z+_ushort_trans.mnc" "427590.7957" "-8.195997123" "72.45943721" "-3.148635961"
Image:/scratch/ITK-build/ExternalData/Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc sum=427590.7957 COM=[8.195997127, -72.45943721, -3.148635962]
Total mx mismatch:8.196
Image:/scratch/ITK-build/ExternalData/Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc sum=427590.7957 COM=[8.195997127, -72.45943721, -3.148635962]
Total mx mismatch:8.196
/home/cic/devgab/projects/src/ITK.github/Modules/ThirdParty/MINC/src/libminc/libsrc2/volume.c:1400 (from MINC): Unable to open file '/scratch/ITK-build/Testing/Temporary/t1_z+_ushort_trans.mnc'
Exception detected while reading /scratch/ITK-build/ExternalData/Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc : itk::ERROR: MINCImageIO(0x23e97a0): Could not open file "/scratch/ITK-build/Testing/Temporary/t1_z+_ushort_trans.mnc".<DartMeasurement name="BaselineImageName" type="text/string">INVALID_BASELINE_GIVEN</DartMeasurement>

It looks to me like the tests are getting setup slightly wrong maybe and the input files can't be found? Or am I misreading this?

The test runs, then it tries to compare a test output file, /scratch/ITK-build/Testing/Temporary/t1_z+_ushort_trans.mnc to a baseline file, but the test output file not exist. What is the test output file not being written?

Oops. I see it now. Its testing COM in RAS space, and that's wrong now :+1:
Patch incoming

All passing!
@vfonov the only remaining question is:
do you need a flag to disable the correction of coordinate spaces for the MINCTransform code? I'm not sure how I would do that right now...

yes, i would say that it is critical, and it have to be very explicit to Enable new behaviour

All passing!
@vfonov the only remaining question is:
do you need a flag to disable the correction of coordinate spaces for the MINCTransform code? I'm not sure how I would do that right now...

Also,  i would like to completely disable the new behaviour where COM location is in different coordinates then what mincstats would report.

@vfonov the disable coordinate conversion is already added at https://github.com/InsightSoftwareConsortium/ITK/pull/147/files#diff-32784fd54fb5bc9cf57e46a4395d785bR94
I have to strongly disagree that these fixes should be opt-in behaviour. Right now the ITK MINC reader is wrong. The coordinates are incorrect according to the internal ITK standard when loading files, making it impossible to mix MINC with any other filetype. These changes make MINC transparently work with the other filetypes ITKIO supports.
To provide backwards compatibility I will figure out how to add a flag to TransformMINC to disable this as well.

If it was easy to disable, Wu did you have to change the tests that were failing?
I want to keep using old behavior by default.

Well, of it will depend on me, I am not going to approve the code that breaks backward compatibility by default.
If ITK maintainers think that's the right thing to go, I will implement a patch for minc-toolkit to maintain compatibility.

@vfonov @gdevenyi you have a better idea of what default makes sense regarding yielding correct behavior and preserving backwards compatibility. I can see arguments either way. Regardless, we can expose the option so the user can choose the desired behavior.
Thanks for the close attention and patches for this tricky issue.

Additional changes coming:
Voxel-wise vector flipping should happen inside the MINCIO code, rather than the TransformMINC code. This is particularly motivated by the fact that I can pass a vector field directly into ANTs as a transform and if I gave it a MINC file with these patches it would do the wrong thing as the vector field wouldn't be flipped.

@gdevenyi  Is this worthy of finishing off?  It has been stale for 3 months now.

Hi,
I got stuck at the point of how to handle flipping the individual loaded voxel coordinate systems right at load, rather than inside the TransformMINC code.
I think I need to do work after https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/IO/MINC/src/itkMINCImageIO.cxx#L134
But at this point we don't yet have an ITK image object, so I can't do ITK cleverness I did in the TransformMINC code.

I am beyond my depth at this point to figure out how to flip the vector directions during load/write in the low-level IO code. Can anyone offer any advice?

So, one can create a composite transform and then recalculate deformation field:
something like
CompositeTransform->AddTransform(LPS_TO_RAS);
CompositeTransform->AddTransform(DisplacementFieldTransform);
CompositeTransform->AddTransform(RAS_TO_LPS);
...
out=TransformToDisplacementFieldFilter(CompositeTransform)

Thanks vlad, I was already able to fix the directions on the displacement field, but my issue is, what about other 4D vector data like DTI? I was hoping to fix this at a low level where everything is uniform.

well, that's highly application dependent. Obviously if vector represents RGB values, it should be passed as it is, and if it's spatial directions - then it will have to be modified. And if it is DTI acquisition - one will have to adjust gradient direction matrix.

Hi,
I also just had this problem. When my input was MINC the antsMultivariateTemplateConstruction.sh changed the orientation after finishing. The only solution is to convert to NIFTI before using the script. Isn't there a way for ANTs not to re-orient and just read MINC header?
Thanks
Eduardo

Hello,
antsMultivariateTemplateConstruction.sh uses hard-coded .nii.gz file suffix. So, short answer - it is not meant to be used with .mnc files.

Right, I wasn't aware of this.
But it did finish and I didn't get an error or warning.
Just a thought, if it's not meant to use .mnc, perhaps the use of .mnc files should stop the script and give a warning or error?

perhaps, here is the repository with that script: https://github.com/ANTsX/ANTs/blob/master/Scripts/antsMultivariateTemplateConstruction.sh - you can submit a pull-request

@gdevenyi Is this PR still relavant?

@gdevenyi Is this PR still relavant?

Yes, the MINC reader is still incorrect, and the coordinate system conversion fixes it.

@gdevenyi Could you provide a roadmap for what you think needs to be done still?  There may be students looking for projects this fall, and I'll see if I can convince one of them to look at this.

@hjmjohnson
Current state as I recall, fixed are

images load properly now
affine transforms read and write properly (both MINC/ITK push/pull definitions handled and RAS/LPS coordinates converted
warp transforms read and write properly (both MINC/ITK push/pull definitions handled and RAS/LPS coordinates converted

as I recall the blockers were

How to handle the breaking change for downstream dependent tools, right now there's a  bool option in the loader, but I don't see how to access given how most tools use a generic reader, I think it should be a compile-time switch instead, I'm not skilled enough in CMAKE to make that happen
How to handle other voxel formats which have directional information, in particular DTI

There is  currently 4 different ways how Analyze file format can be handled, just make the same thing for MINC/XFM reader writer : https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/IO/NIFTI/include/itkNiftiImageIO.h#L42

It  looks like the origin is incorrect when RAS to LPS is needed

Good catch @vfonov I'll take a look

I am trying to make a new pull on the latest codebase: https://github.com/vfonov/ITK/tree/MINC_RAS_LPS_v2 (WIP)

It looks like the origin is incorrect when RAS to LPS is needed

@vfonov The Origin Read/Write will need negative applied to the X and Y dimensions to go from R->L and A->P

It looks like the origin is incorrect when RAS to LPS is needed

@vfonov The Origin Read/Write will need negative applied to the X and Y dimensions to go from R->L and A->P

So, most things are fixed in https://github.com/vfonov/ITK/tree/MINC_RAS_LPS_v2 , we need to make more tests there.
Also, the TransformationMINC for RAS->LPS is not quite complete .

Can we perhaps revive this to integrate this breaking change for ITKv6?

I already forgot what needs to be done. Do we want to, essentially make MINCs behave as if they were NIFTIs ?

Can we perhaps revive this to integrate this breaking change for ITKv6?

@gdeveny Can you rebase on master and fix the conflicts?  I'd be interested to see how/if this breaks our app (Brainsight)...

Why not just document (via direction matrix) that the image is in RAS coordinate system?

Why not just document (via direction matrix) that the image is in RAS coordinate system?

Is this a suggestion to address this in code somehow? I'm not deeply familiar with ITK internals, so I'll need some hints.
My overall goal here was to bring MINC to first-class support in terms of it being treated equally and interchangeably with any other image loaded via ImageIO. Right now, I can't do this due to the misinterpreted coordinates.

I did not take a close look at the code. If you are shuffling array elements to "conform to LPS" standard, you don't need to do that. I see that you are fiddling with orientation matrices, so this PR might already be doing what I suggested.

As far as I remember now the issue is with transformations, in particular with non-linear _grid files. That would need to be recomputed via F∘T∘F transformation on loading and saving any such file.

As far as I remember now the issue is with transformations, in particular with non-linear _grid files. That would need to be recomputed via F∘T∘F transformation on loading and saving any such file.

Correct, this was the last outstanding thing that needs fixing in this PR in a performant way.

Rebasing was too difficult so I manually ported the changes into the new PR #4864


Java Logging with Lambda and Log4j2 appender has a bug

The Bug is that if you follow the instructions logging does not work instead you get
2018-04-23 14:04:19,908 main ERROR Error processing element Lambda ([Appenders: null]): CLASS_NOT_FOUND
2018-04-23 14:04:19,926 main ERROR Unable to locate appender "Lambda" for logger config "root"

Many  requests on Stackoverflow suggest that people are having trouble with this.
I have fixed the issue in a Pull request here:- PR #27  please merge it. thanks

Fixed, thanks

But I still have this error with latest available version, 1.1.0, of com.amazonaws:aws-lambda-java-log4j2.  When will the new jar with this fix be available in public maven repository?

Same error with 1.2, had to revert to 1.0


rename effective_enddate column of full_temporary_stop_regulations_…

I changed xml generator, rspec test are passed, but I think what it would be nice to pay attention on it during the code review.

rename effective_enddate column of full_temporary_stop_regulations_oplog table to effective_end_date.
recreate related db view.
delete useless alias from FullTemporaryStopRegulation model.
fix all rspec test.
fix xml data generation.
fix regulation saver.

 Add missing field to the FTS table and xml export

Yes, I've added the same changes to backend app. See Pull Request #291.

I've checked TARIC xml data scheme and fix output xml for Full Temporary Stop Regulation in accordance with this scheme.


fix detection of contiguous blocks in makeVertexNamesFromIndexArray2

Fixes issue #1015. Includes tests of makeVertexNamesFromIndexArray2

@perrydv no urgency but just flagging this in case you want to take a look, since I think you had originally written this functionality.

Hi @paciorek I've got my head into this and see what is going on and what your solution is.  I'm worried about efficiency.  We've been talking about scaling costs in time and memory, and what goes on in makeVertexNamesFromIndexArray2 is I think one costly model-building steps in both, I think.  You can see it forms a set of objects the size and shape of a model variable to pull out sequences of indices in each dimension of each unique indArr label.  For large variables, this is costly.  If I follow, adding the kind of iteration you did might be very costly for a large array of singleton nodes.  I think it would be better to add more checks in makeSplitInfo to set the contiguity flag (4th element) to 0 when it should be.  The purpose of the "first condition" and "second condition" is to try to cheaply catch violations of splitIndices having a contiguous-consistent form like 1 1  2 2 3 3 or 1 2 1 2 1 2 or other expansions from higher dimensional arrays (e.g. 1 1 2 2 3 3 1 1 2 2 3 3).  Unfortunately the lower + upper triangular case gave 2 3 4 1 3 4 1 2 4 1 2 3 and this tricked the cheap checks and was marked as contiguous when it shouldn't have been.  Clearly there could be more laborious checks, but those might involve formation of large objects to construct the various valid forms.  I'm fairly sure I was trying to avoid doing that, and that this whole section of code was already subject to performance squeezing.  What could really make sense would be to push some or all of these steps into C++.  In a way they would make more sense there, in the sense that using R to achieve good performance on this task was not pretty.  Not hard, but would take some time and care.

makeSplitInfo operates on individual indexes, so without monkeying with how it is set up, it wasn't clear to me how to modify it (without changing it more drastically) to catch these problematic cases that involve examining multiple indexes at once.
Your case of a large array of singleton nodes would not exercise the code I added because of the indArr[indArr < minInd] <- NA check. I need to think through further but I think the case we maybe should be worried about is if the array is defined as a multivariate node and then we use many singleton elements of that node elsewhere in the model.  I can check that case to see whether the code I added meaningfully changes computation time.

I'm not sure what you mean about "individual indices".  I think examples of how makeSplitInfo is used are makeSplitInfo(c(1, 2, 3, 1, 2, 3, 1, 2, 3)), makeSplitInfo(c(1,1, 1, 2, 2, 2, 3, 3,3)), and (in this case), makeSplitInfo(c(2, 3, 4, 1, 3, 4, 1, 2, 4, 1, 2, 3)).  Yes, I think you are right about the useful where your new code could be costly:
code <- nimbleCode({
    R[1:n,1:n] <- exp(-dist[1:n, 1:n])
    for(i in 1:n)
        for(j in 1:n)
            y[i, j] ~ dnorm(0, sd = R[i,j])
})
n <- 4
dist <- matrix(1:16, nrow = 4)
model <- nimbleModel(code, constants = list(n = n), inits = list(dist = dd))

Also I am not sure if it is sufficient to look at info[[1]] only.

Hmm, am I missing something?  In this case of a matrix, makeSplitIndices operates separately on the row and column indices (that is what I meant by 'individual indices' - sorry to be confusing in terminology). But in this case we need info on both row and column indices together to decide if we have a full block.
As far as info[[1]], I think the lengths of info[[1]], info[[2]], ... should always be the same and equal to the number of unique elements in indArr, because info[[1]] is about the row information for each subset being considered, info[[2]] is about the column info for each subset being considered, etc.

OK, right, separately on row and column indices.  I think in theory if there is a non-contiguous block, at least one of those will fail to follow a satisfactory pattern.  It's just that we are cheap in checking that because it would be too costly to check it fully.  This is the first time someone has had a node pattern that breaks it.
With info[[1]] etc., I haven't thought it through fully, but loosely could there be a case where the problem we see here occurs in x[1, 1:4, 1:4]`, so that info[[1]] will just be rep(1, 16), I think?
This is what I mean by pushing into C or C++.  Doing this in R is an exercise in large sets of indexing using operations designing to avoid for loops that would work well using for loops in fast execution.  I know we need a practical short-term solution, but doing it in full detail could be painful.

I'm pretty sure about the info[[1]] issue.
Ok so I tested with a 1000x1000 node where the user uses every individual element separately on the RHS elsewhere in a model. With calculate=FALSE, the model building takes 120 sec. of which 30 sec. is the original implementation of makeVertexNamesFromIndexArray2.
With my addition to the code, there is an additional 40 sec. So non-negligible.
Furthermore, simply having a RHS-only node that is used in an element-wise way results in use of makeVertexNamesFromIndexArray2 and incurs the extra cost.
I think I see ways I could get the cost of my new code down quite a bit. If I can do that, my inclination is to leave it at that as a practical solution rather than pushing to C++ given other priorities. We could leave this issue open to remind us that we might come back and push a chunk of makeVertexNamesFromIndexArray2 down to C++ in the future.

Ok, I think I will be able to get the cost of the extra checking down to be negligible (and to be zero cost when working with vectors, since the current checking is fine for those).

@perrydv Thanks for pushing on efficiency here. I re-organized and the speed now is as good as before because the new check is fully vectorized. For larger cases, it's actually a bit faster now as info is now a list of matrices rather than a list of lists. Turns out it is faster to create info in this way, and it also eliminates the step of creating all later.
@paciorek remember to check logic of the new code on a couple test cases once this passes testing.


Wench which wrap or unwrap the cable

Hi,
I'm a student and I'm trying to use MuJoCo for my research project.
I'm looking for some help with the xml file. I wanted to develop a wench which will wrap and unwrap the cable and ultimately the cable will be connected to manipulator. Basically I am working to develop the cable driven manipulator and for which I need to develop the wench which will wrap and unwrap the cable.

Here is a model which explains my question:
<mujoco>
    <compiler autolimits="true" />
    <worldbody>
        <geom type="plane" size="0.8 0.8 0.1" rgba="1 1 1 1"/>
        <body name="b_winch" pos="0 0 0.1">
            <geom type="cylinder" fromto="0 0 -0.05 0 0 0.05" size="0.05" />
            <joint name="winch_0" range="-1.5708 1.5708" />
            <geom type="cylinder" fromto="0 0 -0.04 0 0 -0.05" size="0.12" />
            <geom type="cylinder" fromto="0 0 0.04 0 0 0.05" size="0.12" />
            <body name="B0" pos="0 0 0">
                <composite type="rope" count="10 1 1" spacing="0.04" offset="0 0 2">
                    <joint kind="main" damping="0.005" />
                    <geom type="capsule" size=".01 .015" rgba=".8 .2 .1 1" />
                </composite>
            </body>
            <body pos="0.5 0 0">
                <geom type="box" size=".01 .01 0.1" rgba=".2 .2 .1 1" />
                <joint name="winch_1" range="-1.5708 1.5708" />
                <site name="l1" pos="0.5 0.0025 0.1" rgba="0 .9 0 1"/>
            </body>
        </body>
    </worldbody>
    <actuator>
        <motor name="winch_0" gear="2" joint="winch_0" />
    </actuator>
</mujoco>

Here is a screenshot illustrating my question:

<actuator>
    <motor name="winch_0" gear="2" joint="winch_0" />
</actuator>

Hi, I think there was some issue when you pasted the model? I only see 3 lines.

Yes, I rectified it. Now please check. I wanted to wrap and unwrap the cable around winch so that the attached link can come closer.

Hi, thanks for the updated model! Ropes are no longer supported in MuJoCo 3, I would recommend to update the model to either use cable or flex, depending on whether you would like an inextensible or extensible cable. Let me know how you get on converting your model (it should be a small change).

ultimately, I am trying to integrate #1096 with the given model I shared with you.  Here is the layout I am trying to do.

Hi, thanks for the updated model! Ropes are no longer supported in MuJoCo 3, I would recommend to update the model to either use cable or flex, depending on whether you would like an inextensible or extensible cable. Let me know how you get on converting your model (it should be a small change).

I am not able to understand how I can the cable type creates a 1D chain of bodies connected with ball joints ?
also I want an inextensible cable, by saying cable I mean a steel wire with diameter around 3 mm.

In principle, you only have to replace type="rope" with type="cable" and spacing="0.04" with something like curve="s". I would remove offset="0 0 2" as well.

In principle, you only have to replace type="rope" with type="cable" and spacing="0.04" with something like curve="s". I would remove offset="0 0 2" as well.

Thanks let me incorporate the changes.

In principle, you only have to replace type="rope" with type="cable" and spacing="0.04" with something like curve="s". I would remove offset="0 0 2" as well.

Thanks, but I am encountering issue while naming the cable and connecting it with the other body.
Here is my code for cable composites-

I am using equality constraint to connect the both end of the cable using -


Add a contributors section to the README

It needed one.

Sometimes you just need to do things yourself


Last minute fixes

Fixes three random bugs:

Fixes flip when you make a marquee selection and then clear it (already fixed for rotate, forgot to port it over)
Fixes the my assets tab for the tile editor so that it reflects edits made to other tiles in the tilemap editor
Fixes some state accidentally being carried over between tilemap editors

cherry pick pr: https://github.com/microsoft/pxt/pull/7817

cherry pick pr: https://github.com/microsoft/pxt/pull/7817


Extension causes high cpu load

Issue Type: Performance
Extension Name: october-code
Extension Version: 0.24.0
OS Version: Linux x64 5.15.0-89-generic
VS Code version: 1.84.2

Sometimes extension freezes while autocomplete is running

The extension 'October Code' took a very long time to complete its last operation and it has prevented other extensions from running.

SergeyKasyanov.october-code-unresponsive.cpuprofile.txt

Hello. Just published new version with some performance improvements. Can you check if problem still exists?

Hello. Just published new version with some performance improvements. Can you check if problem still exists?

Hello. Thanks for the update. The problem happened randomly. It was not possible to repeat it on purpose. We'll see how it works with the updates.

Hello, the problem has appeared again, it seems only when working with yaml files
SergeyKasyanov.october-code-unresponsive.cpuprofile.txt


About the re-weighted loss

https://github.com/jychoi118/P2-weighting/blob/3ea1470e59eb4f4f37a5ecc41edbc9e2e626905b/guided_diffusion/gaussian_diffusion.py#L818
I found that you use the weight to multiply on the final loss, in which the denominator is greater than 1 since self.p2_k >= 1 and self.snr > 0 . Therefore, weight is smaller than 1. I wonder how to achieve the result that the total weights of your method is greater than the baseline of DDPM when the SNR is in the interval [1e-2, 1e0]?

Above plot shows the normalized weights, where the sum of the weights is 1. The plot without normalization is shown in the appendix. Here, weights are smaller than the baseline as you expected.

Thanks！

Why is the numerator 1 in the code, not the lambda mentioned in the paper?

https://github.com/jychoi118/P2-weighting/blob/3ea1470e59eb4f4f37a5ecc41edbc9e2e626905b/guided_diffusion/gaussian_diffusion.py#L818
I found that you use the weight to multiply on the final loss, in which the denominator is greater than 1 since self.p2_k >= 1 and self.snr > 0 . Therefore, weight is smaller than 1. I wonder how to achieve the result that the total weights of your method is greater than the baseline of DDPM when the SNR is in the interval [1e-2, 1e0]?


Generate PWA Assets functionality not works when srcDir is not default

Hi team,
I've discovered an issue where the Generate PWA Assets functionality not works when the srcDir is not set to its default value (e.g: set to src).
I found the root cause in file: https://github.com/vite-pwa/vite-plugin-pwa/blob/6845dc7ab8c8927918a7431f4f8cb296dd399ca2/src/pwa-assets/config.ts#L64, the root is viteConfig.root and that  is equal to nuxt.srcDir in nuxt default configuration. Therefore, if images are set to 'src/public/favicon.svg' in pwa-assets.config.ts, it resolves to 'src/src/public/favicon.svg'. This results in a file not found error, as the actual path should be 'src/public/favicon.svg'.

Nuxt 3.12.0 (nightly) also failing when building and generating dts pwa icons (weird, in dev works)
/cc @danielroe maybe some paths in dev different from build/prepare commands

@aa900031 can you provide minimal reproduction?

@userquin @danielroe minimal reproduction is here, but stackblitz can't exec sharp, so I think should download this project and run at local
https://stackblitz.com/edit/reproduce-vite-pwa-nuxt-assets-custom-src-gwjm7u?file=README.md

Daniel, in Nuxt 3.12 now we have 2 Vite roots, server (root folder) and client (now it is app folder) and so we need to change the logic: since we've the image relative to root folder we cannot use the same logic fro server and client.
Moving pwa-assets.config file inside app works in dev but not generating pwa icons on build: pwa icons dts also missing.

@aa900031 we need to review the logic in vite pwa plugin, we'll need to add some hooks to resolve pwa assets configuration and pwa image, by default should work as it is right now (add resolve config and resolve pwa image).
In the meantime use default nuxt layout or switch to PWA Assets Generator CLI, sorry.

Thanks for your reply, I'll use CLI to handle it for now

@userquin Thanks for your reply, I'll use CLI to handle it for now

With the new version I'm going to release, you will need to move pwa-assets.config.ts inside app folder and:

configure public dir properly

// nuxt.config.ts
import { resolve } from 'node:path'
...
export default defineNuxtConfig({
  nitro: {
    publicAssets: [{ dir: resolve(process.cwd(), 'src/public') }]
  },
  dir: {
    public: 'src/public',
  },

or move public folder to root (like new v4 layout, using app instead src), you also need to change also image name in pwa-assets.config.ts:

// src/pwa-assets.config.ts
export default defineConfig({
  ...
  images: '../public/favicon.svg',
})

I think change dir.public is not a good idea, that will be have compatibility for other modules.
let me find some modules later

If use nuxt/image modules and set dir.public like your guide that will not working
because nuxt/image resolve public dir with srcDir: https://github.com/nuxt/image/blob/3a98a685746b5be2188ddf59d091a4f3e525067b/src/module.ts#L60

Nuxt resolves the public directory like this: resolve(nuxt.options.srcDir, nuxt.options.dir.public). dir.public is public in v4 but will be a fully resolved directory in v4, defaulting to resolve(nuxt.options.rootDir, 'public').

Nuxt resolves the public directory like this: resolve(nuxt.options.srcDir, nuxt.options.dir.public). dir.public is public in v4 but will be a fully resolved directory in v4, defaulting to resolve(nuxt.options.rootDir, 'public').

So... nuxt image not yet compatible with v4 layout

resolve(nuxt.options.srcDir, options.dir) should correctly resolve to resolve(nuxt.options.rootDir, 'public') in this case.

If nuxt/image resolves the public path to src/public in the context of setting srcDir: 'src'
Continuing with the previous context, I added the setting dir.public: 'src/public' suggested by @userquin, then the public path I will get in nuxt/image will be src/src/public, right? Such a result should be unexpected
The above versions are all in Nuxt 3

Continuing with the previous context, I added the setting dir.public: 'src/public' suggested by @userquin, then the public path I will get in nuxt/image will be src/src/public, right? Such a result should be unexpected

I need to review the code, it will take more time since I need to rewrite the pwa plugin logic, in the meantime use the CLI, sorry again.

The above versions are all in Nuxt 3

Yes, but we're talking about a breaking change in Nuxt 3.12, you can try using nuxt 3.12 (npm:nuxt-nightly@latest) moving public folder to root, both nuxt image and pwa should work.


Bed file not loading

Hi,
I am running the msisensor msi command as below:
msisensor msi -d microsatellites.list -n example_normal_bam.bam -t example_tumour_bam.bam –e my_targetedregions.bed -o target_region_msi.tsv
However, it seems like the bed file is not loading, as according to some of the answers that I have seen here, I would expect something like:
loading bed regions ...
loading homopolymer and microsatellite sites ...
Total loading windows:  n
However, mine goes straight to:
loading homopolymer and microsatellite sites ...
Total loading windows:  5810
Total loading homopolymer and microsatellites:  1766632
Why is the command not just taking the windows in my bed file? Any help would be very much appreciated.
Thanks.

@PriyaMilne
I think there may be two reasons for this.  First, because the bed file you entered does not exist, the bed file cannot be opened. Second, you do not have the bed file permission. It is recommended that you check if the name of the bed file is spelled correctly and whether you can access file.


SimpleDuplex example

Hi,
will it be possible to have a simple example of simpleDuplex usage ?
I don't really understand the function of this 'socket'.
Thanks for help..

If you're just looking to connect the contents of two sockets to each other you probably want nclib.ferry. The duplex functionality is for splicing one socket's recv and another socket's send into a single object.

thanks for bringing this up 👍


unable to upload .txt file

Describe the bug
When I tried to upload a .txt file containing all my references, ASReview could not find proper encoding for the data file. I don't know how to solve this.
To Reproduce
Go to your project. Go to finish setup. Put .txt data file in the box. Click on upload.
Version information

OS: [Windows]
ASReview version [e.g. 0.18]

Hi there @yassenenzo!
Thanks for reporting your bug!
Could you do either one of the following?

Tell us how you created the .txt file
Send a screenshot of the content of your .txt file (can be a just of record)
Send your .txt file to<EMAIL_ADDRESS>
Thank you!

Hi,
This is the screenshot of my .txt file. I created it in pubmed. I hope to hear from you soon.
Thank you in advance!

Hi @yassenenzo ,
I think I see what the problem is, the .txt file PUBMED creates is not in RIS format, making it unreadable for ASReview LAB unfortunately.
However, there is a work around:

Export your search results as an .nbib file. To download the .nbib file you can follow these instructions: https://pubmed.ncbi.nlm.nih.gov/help/#citation-management-software.
Import this .nbib file to your reference manager (EndNote for example, which is also very useful for deduplicating search results and retrieving missing abstracts).
Export the library from your reference manager in RIS format (For EndNote see these instructions for example: https://libguides.jcu.edu.au/c.php?g=829543&p=6602335)
Upload to the RIS formatted file to ASReview.

Let me know if this works for you!

Hi!
It worked, thank you! I used Zotero instead of EndNote and this worked as well.
Thanks again!

Yay, glad to hear it worked out! Good luck with screening!


Changing paths for webp images

Hello Maintainers,
I'm interested in contributing to this issue under hacktoberfest and would like to take it on. Could you please assign this issue to me, or let me know if there are any specific guidelines or additional information I should be aware of before I begin working on it?
Thank you!


Meta ads are nor working

MAX Plugin Version
1.0.8
Flutter Version
61.2.1 (latest)
Device/Platform Info
Android 11
Current Behavior
Hi,
i can never get any fills from Meta. Using mediation debugger to lad test meta always gives error code 204 (no fill)
When calling "loadInterstitial" from my app there is no callback.
I spotted this in the logs
I am running on a real phone but same behavior on emulator.
D/SensorManager(26284): registerListener :: 1, LSM6DSL Accelerometer, 200000, 0, com.facebook.ads.redexgen.X.96@a3eef5f
D/SensorManager(26284): registerListener :: 4, LSM6DSL Gyroscope, 200000, 0, com.facebook.ads.redexgen.X.97@c350dac
.
.
.
D/SensorManager(26284): unregisterListener :: com.facebook.ads.redexgen.X.96@a3eef5f
D/SensorManager(26284): unregisterListener :: com.facebook.ads.redexgen.X.97@c350dac
The other networks are all working.
Anyone have a clue?
Expected Behavior
No response
How to Reproduce
Use the the mediation debugger on an Android with facebook installed.
Additional Info
No response

Update: I put on verbose logging and found this
[AppLovinSdk]
E/AppLovinSdk(27960): **************************************************
E/AppLovinSdk(27960): NO FILL received:
E/AppLovinSdk(27960): ..ID: "be932007fcbf83"
E/AppLovinSdk(27960): ..FORMAT: "INTER"
E/AppLovinSdk(27960): ..SDK KEY: "2IsVyoyChKgTarQg2Jfbo4pkgS45s84C2HWNW17Bd5Q8S9LbJss8bhpQd5OnT07DBK9KaBaOobOoyNKwrWo55"
E/AppLovinSdk(27960): ..PACKAGE NAME: "Hidden"
E/AppLovinSdk(27960): ..Reason: [{"code":2051,"msg":"Please set test mode for guaranteed fill"},{"code":1000,"msg":"Adnetwork missing required signal data"}]
Anyone know how to set test mode for guaranteed fill?

you can add test mode device in meta audience network dashboard and it will work.

Hi,
anyone knows why i suddenly get this after the latest update?
FAILURE: Build failed with an exception.

What went wrong:
Could not determine the dependencies of task ':app:processReleaseResources'.

Could not resolve all task dependencies for configuration ':app:releaseRuntimeClasspath'.
Could not resolve com.applovin:applovin-sdk:+.
Required by:
project :app
Failed to list versions for com.applovin:applovin-sdk.
Unable to load Maven meta-data from https://jcenter.bintray.com/com/applovin/applovin-sdk/maven-metadata.xml.
Could not HEAD 'https://jcenter.bintray.com/com/applovin/applovin-sdk/maven-metadata.xml'.
Read timed out


Umple Template Duplicate Template gives no feedback

When a class has multiple templates with the same name, there is no warning that earlier instances are being ignored. There should probably be a warning if possible, to keep the templates behavior similar to the rest of umple
For the example code:
class Generate
{
    template <<! x !>>
    template <<! y !>>

    emit gen()(template);
}

gen will just return a string that contains 'y', without warning that the earlier occurrence is being ignored.

Resolved. Now generates warning 3506


PowerToys crashes if I make a serach for a programme, and once it find the programme I click on it (in search box results) to execute it.

Microsoft PowerToys version
<IP_ADDRESS>
Running as admin

[ ] Yes

Area(s) with issue?
PowerToys Run
Steps to reproduce
click Alt + spacebar; once search box opens, type a programme you are searching its .exe file, in order to execute it (in my case I searched "Razer Synapse" (which is installed on my computer), and once it founded the .exe file, click on it. I would expect it to run that programme.
✔ Expected Behavior
I was expecting to click on the razer synapse.exe file, and once I had clicked, I would expect it to run Razer Synapse. Instead, PoweToys crashed and generated the error below in Actual Behaviour.
❌ Actual Behavior
Version: <IP_ADDRESS>
OS Version: Microsoft Windows NT 10.0.21364.0
IntPtr Length: 8
x64: True
Date: 23/4/2021 9:44:54 μμ
Exception:
System.UnauthorizedAccessException: Access to the path 'C:\Users\Χρήστος Κοκκόλης\AppData\Local\Microsoft\PowerToys\PowerToys Run\Settings\UserSelectedRecord.json' is denied.
at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamWriter.ValidateArgsAndOpenPath(String path, Boolean append, Encoding encoding, Int32 bufferSize)
at System.IO.StreamWriter..ctor(String path)
at System.IO.File.WriteAllText(String path, String contents)
at System.IO.Abstractions.FileWrapper.WriteAllText(String path, String contents)
at Wox.Infrastructure.Storage.JsonStorage`1.Save()
at PowerLauncher.ViewModel.MainViewModel.OpenResultsEvent(Object index, Boolean isMouseClick)
at PowerLauncher.ViewModel.MainViewModel.b__22_12(Object index)
at PowerLauncher.ViewModel.RelayCommand.Execute(Object parameter)
at PowerLauncher.MainWindow.SuggestionsList_PreviewMouseLeftButtonUp(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.UIElement.OnPreviewMouseUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
Other Software
Razer Synapse 3

@Kokkolis
It seems that you aren't allowed to access a fiel of PT Runs' settings:
Access to the path 'C:\Users\Χρήστος Κοκκόλης\AppData\Local\Microsoft\PowerToys\PowerToys Run\Settings\UserSelectedRecord.json' is denied.
Is this path located in your user profile directory that is used to run PT Run?

is the current logged in user and PowerToys different users?

is the current logged in user and PowerToys different users?

Is there a way to detect and logg this to BugReport?

No, same account… and the problem persists even after a couple of Microsoft Windows as well as power toys updates..
Στάλθηκε από το iPhone μου

11 Ιουν 2021, 06:42, ο χρήστης «Clint Rutkas @.***>» έγραψε:

is the current logged in user and PowerToys different users?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@mykhailopylyp looks like it should be easily solvable by try/catch

looks like it should be easily solvable by try/catch

Yes, we should make our implementation here more robust. Also, it shouldn't happen at the first place.

Agreed.  But #10836 is same issue and has a report bug zip.  lets track this there.

Reopening this issue because it happens only on writing and in #10836 file can not be read. So here we can recover after the exception quite easily.

Was fixed in 0.41

@Kokkolis
Can you help us to verify one hyposisis?

Go to %localappdata%/Microsoft/PowerToys/PowerToys Run/Settings
Righ-click on UserSelectedRecord.json and select properties
Let us know if either of the following attributes is checked

Hello,
Yes, I will when I get home later this Thursday.
Thanks you all for trying to solve it!
Christos
Στάλθηκε από το iPhone μου

5 Ιουλ 2021, 15:19, ο χρήστης «Mykhailo Pylyp @.***>» έγραψε:

@Kokkolis
Can you help us to verify one hyposisis?
Go to %localappdata%/Microsoft/PowerToys/PowerToys Run/Settings
Righ-click on UserSelectedRecord.json and select properties
Let us know if either of the following attributes is checked
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hello,
Please see screenshot underneath. The "hidden" box is ticked (that's because App Data folder and all subfolders & files are hidden from view).
I am near my computer till Tuesday midday in case you would like me to test anything else, then I am gone for another 15 days. Problems still continue under Windows 11 (microsoft Dev channel).
Thank you.
Στις Δευτέρα, 5 Ιουλίου 2021, 03:19:27 μ.μ. GMT+1, ο χρήστης Mykhailo Pylyp<EMAIL_ADDRESS>έγραψε:

@Kokkolis
Can you help us to verify one hyposisis?

Go to %localappdata%/Microsoft/PowerToys/PowerToys Run/Settings
Righ-click on UserSelectedRecord.json and select properties
Let us know if either of the following attributes is checked

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@Kokkolis
Thank you for following up! A general issue is tracked in https://github.com/microsoft/PowerToys/issues/11803


[Feature] Can series custom image support datazoom scaling?

What problem does this feature solve?
The requirement is to display spectrum data similar to waterfall charts, support zooming, and the amount of data is huge, with hundreds of millions of levels. Currently, it is implemented with heat maps, which display slowly and cause lags in operations such as zooming. Consider loading the generated images into echarts and support zooming, but currently loading custom images does not support zooming.
What does the proposed API look like?
I hope to load a custom image that supports scaling and can align the x-axis and y-axis scales.

waterfall, heatmap, millions of images - what a chart.... beyond imagination ! 🔮

@helgasoft Not millions of images, but a single image generated from millions of data


Windows: Fix panic when calling set_fullscreen(None)

Fixes #501
This circumvents a panic when one calls set_fullscreen(None) on a window that has never been in fullscreen mode prior to calling that method.

Build and tested with Windows 7 (64bit)

Alright, I still want @edwin0cheng to verify that this is good, but then we should be good to merge. Thanks for the contribution!

Look good for me, thanks

@edwin0cheng thanks!


proposal: introduce alias management for k8s.io/kubectl/pkg/cmd/config

What would you like to be added
Extend the kubectl config command with new subcommands to handle aliases:
% kubectl config
...
  current-context   Display the current-context
+ delete-alias      Delete the specified alias from the kubeconfig
  delete-cluster    Delete the specified cluster from the kubeconfig
  delete-context    Delete the specified context from the kubeconfig
  delete-user       Delete the specified user from the kubeconfig
+ get-aliases       Display aliases defined in the kubeconfig
  get-clusters      Display clusters defined in the kubeconfig
  get-contexts      Describe one or many contexts
  get-users         Display users defined in the kubeconfig
+ rename-alias      Rename a alias from the kubeconfig file
  rename-context    Rename a context from the kubeconfig file
  set               Set an individual value in a kubeconfig file
+ set-alias         Set a alias entry in kubeconfig
  set-cluster       Set a cluster entry in kubeconfig
  set-context       Set a context entry in kubeconfig
  set-credentials   Set a user entry in kubeconfig
  unset             Unset an individual value in a kubeconfig file
  use-context       Set the current-context in a kubeconfig file
  view              Display merged kubeconfig settings or a specified kubeconfig file
...

# ~/.kube/config
apiVersion: v1
clusters: {}
contexts: {}
current-context: foo
kind: Config
preferences:
+ aliases: {}
users: {}

Why This Matters
The current method of setting up aliases using the alias utility in POSIX shells is inconsistent and cumbersome, relying on external commands and resulting in scattered definitions. To address this, we're introducing 4 config subcommands for kubeconfig aliases. This approach, inspired by the simplicity of Git, ensures a seamless experience regardless of the chosen shell.
In Git, the process looks like this:
git config --global alias.ci commit
# To rename, you delete and create again
git config --get-regexp ^alias
git config --global --unset alias.ci

The proposal aligns with this simplicity, providing a standardized and easy method for users to create, rename, list, and delete aliases with kubectl:
kubectl config set-alias
kubectl config rename-alias
kubectl config get-aliases
kubectl config delete-alias

Draft subcommands
Subcommand set-alias
kubectl config set-alias [options]

For instance:
% kubectl config set-alias ga 'get all'
Alias "ga" created.
% kubectl config set-alias gp 'get pods'
Alias "gp" created.
% kubectl config set-alias dp 'delete pods'
Alias "dp" created.
% kubectl config set-alias ex 'explain'
Alias "ex" created.

Subcommand get-aliases
kubectl config get-aliases [options]

For instance:
% kubectl config get-aliases
NAME   COMMAND
ga     get all
gp     get pods
dp     delete pods
ex     explain

Subcommand delete-alias
kubectl config delete-alias [options]

For instance:
% kubectl config delete-alias ga
Alias "ga" deleted.

Subcommand rename-alias
kubectl config rename-alias [options]

For instance:
% kubectl config rename-alias ga foo
Alias "ga" renamed to "foo".

/sig cli


docs-bug(Datepicker/DateFilterFn): DateFilterFn signature does not indicate possible 'Moment' types, instead includes 'null' and return value is not explained either

Documentation Feedback
There is no indication that DateFilterFn can be handed a 'Moment' type value.
The filter function is also sometimes called with null as an argument, regardless of project setup, though no explanation is ever given as to what 'null' even conceptually means:
It's a Date filter. There are no 'null' dates on any human calendar. Should I filter them out? Does it even matter?
Furthermore: It is not explained in the docs, if true as a return value means keep or toss. Am I filtering out the good ones or the bad ones?

Affected documentation page
https://material.angular.io/components/datepicker/api#DateFilterFn

can this be assigned to me please :)

Wow, that was fast. Thank you so much,


Das_Geek: Watch gifts-stellar.org

Das_Geek requests the watch of the watch_keyword gifts-stellar\.org. See the MS search here and the Stack Exchange search here.

gifts-stellar\.org has been seen in 0 true positives, 1 false positive, and 0 NAAs.

I gave the listed post an fp because the user probably did get punked and didn't probably mean and harm with the post, but we should watch the website.

Approved by Makyen in Charcoal HQ


Conflict with tabset (angular-ui /bootstrap)

This is great but I can't use it in a tab made with angular-ui /bootstrap (https://github.com/angular-ui/bootstrap/tree/master/src/tabs)
If the map tag is in a tab, it does not show.
outside a tab, it shows great.
Any advice?

Please checkout this https://github.com/allenhwkim/angularjs-google-maps/issues/279.
  <tabset>
    <tab heading="One" ng-click="$emit('a')">
      <map center="London"></map>
    </tab>
    <tab heading="Two" ng-click="$emit('b')">
      <map init-event="b" center="Liverpool"></map>
    </tab>
    <tab heading="Three" ng-click="$emit('c')">
      <map init-event="c" center="Andria"></map>
    </tab>
  </tabset>

Cool! thanks
After moving the map to the first empty tab, it stated showing on "Good" browsers :-)
Nothing showing in IE 11 and Edge shows just the background.
Is there a shim or something you know of?

This does not work in IE 11, http://plnkr.co/edit/K1kFDh?p=preview?

Can someone who has IE11 test this url?  http://plnkr.co/edit/K1kFDh?p=preview

I did test it. Use the code and it works for me fine
Thank you for a great help

Nice, if u don't mind, could you add a star to this repo if you want to recommend to other developers?

Done. But you deserve more than one star :-)

Thanks.

How would that work with ui-gmap-google-map? Also for me Angular translates tabs as li + a with a having its own ng-click so it ignore tab ng-click aparently.


NetInfo Signal Strength (1-4 bars)

Describe the Feature
When the user has 1 bar isInternetReachable is true, but the connection may still be unusable from a practical standpoint. It would be great if we could get info about the signal strength/quality so we can perform actions only when signalStrength >= 2 for instance.
Related Issues
https://expo.canny.io/feature-requests/p/netinfo-signal-strength-1-4-bars

@geirman 👋 This library is only able to support features which the operating systems themselves provide. Are you able to send over details of this feature in the native SDKs?

Totally, that makes sense. I'm not a native developer, but it seems like it's natively supported on android, but appears to rely on a cleaver hack for iOS...

Android Official Support
Apple Thread (not officially supported)

+1
strength is available only when type is 'wifi', it will be nice to have signal strength on type 'cellular' too!

I have implement strength in Android years ago.
This is reference: https://github.com/react-native-vietnam/react-native-network-state/blob/master/android/src/main/java/com/reactnativevietnam/RNNetworkModule.java#L118

Hi,
any news on this?

Hi @MarouaniALA :wave: - nope! The community awaits a PR from someone interested enough to invest the time to do it.

It looks like Apple does not currently provide a public API to access this information for a variety of reasons.  Private APIs exist and have existed in the past but they will probably not pass validation to the app store and Apple has concerns about people tampering with the networking code.
https://developer.apple.com/forums/thread/112601
https://developer.apple.com/forums/thread/113534
https://developer.apple.com/forums/thread/113004

@jimfoambox very interesting! Agreed if there is no public API this is not something we can include in the module.
I'd happily merge a PR for android though if anyone worked one up


[FEAT] Create Subscription Plan Feature Endpoint - BACKEND

Description
Develop a backend endpoint to handle requests for creating subscription plan features. The endpoint will accept a feature and a description. validate and sanitize the data, and then handle both successful and failed validations appropriately. If the data passes validation, they will be stored in the database and a 'success' response will be sent to the client. If validation fails, an error message will be returned.
Acceptance Criteria

Accepts and validates the data.
Persist the data to the database.
Return the appropriate response and status code

Authentication

The user must be signed in as a super admin to access the view endpoint.

If a user is not authenticated as a super admin, the API should return a 401 Unauthorized error.
Requirements
Implement API endpoint with data validation and sanitization
Set up database integration and secure storage
Expected Outcome
The user input data should be successfully sent to the backend, or the user will receive an error message if unsuccessful
Status code

201: feature was successfully stored.

400: Invalid data .

401: data already exist.

500: A server error occurred.

Endpoint
[POST] /api/v1/add-plan-feature
Requests:
headers:
content-type: application/json
{
    "feature": "string"
    "description": "string"
}

Responses:
Successful response
{
    "message": "string",
    "success": true,
    "status_code": int
}

Error response
{
    "message": "string",
    "success": false,
    "status_code": int
}

Database design
schema
Table name: features_table
id:
constraints: string(uuid), unique, primary-key, not null
feature:
constraints: string, not null, max-length(255)
Description:
constraints: string
Testing
Unit Tests
The systems should have unit tests covering:

[ ]  Validates data and check for duplicate features.
[ ]  Ensure only a super-admin can make the request
[ ]  Ensure data is saved correctly to the database.
[ ]  Test that the appropriate response and status code is returned

there are no /admin routes

also, this seems duplicated

I've updated the route to /api/v1/add-plan-feature.
Regarding the duplicate issue, I believe you may be referring to the [FEAT]: Create Subscription Plan API Endpoint - BACKEND #202 ticket, which I also created. This ticket handles the creation of plans but does not address the creation of features for those plans. Since some features will be used in multiple plans, I decided to separate them into two distinct endpoints (and also in the database schema).

What of #55

I actually didn't see that before even though I did a search before creating the issue. It seems I would have to close the other issue(#202 )
However, the issue #55 does not seem to have any feature for the created plans. Can I discuss with the creator to add it? Plans need features

You can, and if the creator is not working on it again, Lemme know so it can be assigned to you.

Alright thanks

I've reached out to the creator of  issue #55 and it has now been modified. pls confirm. @phurhard