[BUG] Header with long number of  lines -> scroll screen speed vs. down arrow key speed

This is an variation of the issue posted by @SkepticMystic.
When you have a header with a lot of lines of text there is a little diference between the speed scroll of the screen vs. the speed of using the keyboard down arrow key to navigate to the next lines. The effect is that I lost the control of the text cursor ( | ), giving the sense that the cursor is missing
This only occurs in the end of the screen (from top to bottom). Everything is OK from (bottom to top)
To Reproduce
An Example:

I have a h3 that has 300 lines of text (line 1 to line 299). My 23 screen monitor show only the line 1 to line 34.
When I used obsidian Zoom in this h3 and start to navigate (down arrow key) from line 2 to line 30 everything is OK
When I start to navigate from line 30 (down arrow key) to line 50 for example I start to lose the position of my text cursor after the line 34.

The screen is scrolling down but the cursor disapears >>> But, if I use the scroll button of my mouse, I can see where the cursor is. The cursor is always 3 lines above the end of the screen.
This behavior gets more evident when you have "nested" header  h4 inside an h3 for example
Expected behavior
Be able to see my text cursor when I press the down arrow key
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: MacOS 11.1
Obsidian Version: 0.12.3
Plugin Version: 0.1.1

Additional context
ln.md is one of my long notes
My suggestion is to use Obsidian Zoom on line 135 ### Controle Suas Emoções
LN.md
Thanks for reading this.

Working perfect on version 0.2.5 On Obsidian 0.13.14

Editor = Source Mode
Editor = Live Preview


ci: replace travis with github actions

translates .travis.yml to .github/workflows/build.yml
adds .github/workflows/codeql.yml
replaces parity with openethereum in the install script
bumps solidity version to 0.5.17
update the PREREQUISITES document

@q9f I appreciate your contribution 👍 👍


omnibus: fips-provider: use the same build env as other recipes

What does this PR do?
Provide the same build environment as other recipes
Motivation
Our current FIPS provider build are built with the default compiler, which makes the fips provider depend on the glibc version used by the build image distribution (2.34 in this case)
This change ensures we use the correct toolchain, which targets our minimally supported versions (2.17 for x86, 2.23 for arm64)
Describe how you validated your changes

Possible Drawbacks / Trade-offs
Additional Notes

/merge


console

console - Swift wrapper for Console I/O :large_orange_diamond:

@qutheory do you know where we could add this?

Closing this due inactivity


Fails on Oracle Linux 7 due to 'with_items: "{{ ubuntu_packages }}"'

The issue is with the task to install php7 on Ubuntu systems. This task should be excluded on Oracle Linux systems which are RedHat based. But the task defines 'with_items: "{{ ubuntu_packages }}"', which ansible must be trying to resolve before it processes the when clause.
I'm pretty new to ansible and I'm not sure how to fix this. For my use case I just removed the task completely because we only use Oracle Linux at work.
Thanks for creating / maintaining these roles.

Hi @macdanny
So, removing a task in Debian.yml helped you run the playbook on the Oracle Linux successfully? The Debian.yml should be completely ignored, as Oracle Linux is part of the RedHat family. I'll try to find a Oracle Linux docker container to see if I can replicate this behaviour.

Ah, the role is not using the ansible_os_family but the ansible_distribution. Seems this is common for all of my Zabbix roles. Will fix it.


fix(versions): update Activiti/activiti-cloud-full-chart-security versions

UpdateBot pushed helm dependency: activiti-cloud-full-example to: 7.1.321

UpdateBot commands:
updatebot push-version --kind helm activiti-cloud-full-example 7.1.321


Deployment in two tenant environment

The guide has an error if you are deploying the app in a situation where Azure subscription is in another tenant than Office 365. Steps 1, 3 & 4 (App Registrations & related configurations) need to be done in the Office 365 tenant.

Thanks @veskunopanen for reporting this.
Will update the deployment guide to reflect mentioned changes.


point_cloud_transport_plugins: 1.0.3-1 in 'melodic/distribution.yaml' [bloom]

Increasing version of package(s) in repository point_cloud_transport_plugins to 1.0.3-1:

upstream repository: https://github.com/ctu-vras/point_cloud_transport_plugins.git
release repository: https://gitlab.fel.cvut.cz/cras/ros-release/point_cloud_transport_plugins.git
distro file: melodic/distribution.yaml
bloom version: 0.11.2
previous version for package: null

draco_point_cloud_transport
* GCC 7 compatibility.
* Report log messages from the transport via the log helper.
* Hide draco library symbols from include files so that it does not have to be exported.
* More robust Draco CMake finding.
* Adopted direct encoders and decoders.
* Moved draco_point_cloud_transport into its own folder
* Forked from https://github.com/paplhjak/draco_point_cloud_transport
* Contributors: Martin Pecka, Jakub Paplham, Tomas Petricek

point_cloud_transport_plugins
* Added point_cloud_transport_plugins metapackage to this repo.
* Contributors: Martin Pecka, Jakub Paplham

Depends on #37180 and #37181.

Same as here: https://github.com/ros/rosdistro/pull/37239#issuecomment-1548114042

@peci1 Can you please resolve the conflicts?

Thanks for merging. However, the buildfarm is somehow unhappy because of point_cloud_transport:
23:04:45 Investigating (0) ros-melodic-point-cloud-transport:amd64 < none -> 1.0.9-1bionic.20230523.205736 @un puN Ib >
23:04:45 Broken ros-melodic-point-cloud-transport:amd64 Depends on ros-melodic-cras-py-common:amd64 < none | 2.2.2-1bionic.20230515.164709 @un uH > (<= 2.2.2)
23:04:45 Broken ros-melodic-point-cloud-transport:amd64 Depends on ros-melodic-cras-topic-tools:amd64 < none | 2.2.2-1bionic.20230515.165141 @un uH >

https://build.ros.org/job/Mbin_uB64__draco_point_cloud_transport__ubuntu_bionic_amd64__binary/1/console
Do you have any ideas on why is that the case?

Ahh, got it...
<exec_depend version_lte="2.2.2">cras_py_common</exec_depend>

I swapped lte and gte... I'll prepare a fixup.
But it is interesting - I always thought these attributes aren't used anywhere...


Awesome Image Slider

I would like to add an image slider like this

Please assign me this  issue under GSSOC'21 participation @harshgupta20 @ridsuteri @991rajat @urvashi-code1255

@YasmineEl-shahat a similar project by the name click and drag image slider already exists :(


Engine/client API design: constraint and required validation

This issue is primarily aimed at supporting #130, handling constraint and required validation.
Potential overlap with other concerns
From a user perspective, these validation concerns may have some conceptual overlap with #80, as a broader bucket of other errors/warnings. As I explored possible directions for the core validation functionality, I've also tried to keep these other use cases in mind.
My expectation coming into this was that I would find these concerns have enough natural overlap that a clear API generalization would emerge. I feel less sure of that now than I did initially!
I now believe that there's enough potential complexity to these spec-driven aspects of validation that it'll be more prudent to address them in isolation, but to remain mindful that they may yet have commonality in the future.
Spec implications: constraint and required
Both constraint and required are specified as arbitrary boolean expressions. The two expressions determine the validity of a node's value:

expression
state
blank
non-blank

constraint
true*
✅
✅

constraint
false
✅
❌

required
false*
✅
✅

required
true
❌
✅

* = default (expression not defined)
✅ = 'valid'
❌ = 'violation'

Forms may optionally define messages corresponding to each condition, which should be presented to a user when the respective condition is violated:

jr:constraintMsg
jr:requiredMsg

Both cases may be defined either as a string literal, or as a translated expression (jr:itext('id')). Notably: these effectively constitute a large subset of the functionality specified for <label> and <hint> (string literal -> those elements with a bare text child node; ref="jr:itext('id')" otherwise). I don't know if/to what extent Markdown should be supported, but otherwise it seems quite likely the current TextRange APIs are already well suited for both of these message cases.
API directions
Minimal expansion, no new API concepts
A minimal expansion with existing API concepts would essentially add three state properties:

constraint
constraintMsg
requiredMsg

This would be a trivial change from an engine/client API perspective. It would also be a trivial change to implement on the engine side.
A type-level example of this change can be seen in this commit.
While this change would be trivial, it imposes considerable complexity on clients in terms of reasoning about validity:

Determining the actual validity of a node is complex. There is no single point of state which can be checked to determine this. There isn't even a clear combination of states which a client can use to determine it, without inferring some additional details not presently exposed in the engine's API. In more detail...

... while determining the satisfication of the constraint condition is relatively straightforward (is it true?), determining the actual validity of the required condition is much more involved. A client must determine whether the node is required, and if so whether its value is non-blank. For currently represented value node types, there are reasonable heuristics for this, but it's already error prone and could become substantially more so.

Reasoning about the documentation of these states is challenging! So much so that I took at least half a dozen passes to try to simplify their explanations, and I still find them quite convoluted.

There are clear use cases for determining validity not just at a leaf/value node level, but at least at the form level as well. It's quite likely we'll want to facilitate that determination at arbitrary subtree points as well. Doing this at the client level would be reasonable straightforward (tree walking), but it's something that would be disruptive (for multiple clients) to change without some additional engine-level consideration.

There is considerable API ambiguity about when/whether a message will be present for a given validation condition. It's fairly straightforward to express with prose: a message will be present... if the form defines a message for the condition, and if the condition is violated. But the actual implementation logic for consuming that API would be much more involved, particularly due to the complexity of determining whether the required condition is violated.

Violations of each condition are mutually exclusive (a constraint violation can only occur with a non-blank value; a required violation can only occur with a blank value), but this is not at all clear from an API perspective in the minimal approach. Again, this is straightforward to express with prose, but much more complex for a client consuming the API.

Validation-specific expansion, minimal API impact otherwise
A slightly less minimal approach, focused specifically on the validation use cases we want to achieve, could help to address all of the concerns discussed above. An example of this approach can be seen in this diff.
A couple of high-level details of this approach:

Each node has a new node-level validationState property, with validation details specific to the node type: direct validation state on leaf/value nodes, with parent/structural nodes providing reference access to violations of their descendants. This separation isn't strictly necessary! But I think it would be valuable for client implementations (there is one place on every node to look for all validation-related state). And I anticipate that it will have benefits for engine implementation as well (not that we should necessarily let that guide the design).

As mentioned in the previous point, each parent/structural node's validationState contains references to any violations present on any of its descendants (and a few mechanisms to reference the affected nodes from there; we can narrow these down if there's interest). This isn't particularly interesting from an API perspective, but I anticipate it would be helpful for some aspects of the visual design in the web-forms Vue UI client: whether the form itself has validation errors (RootNode.validationState), whether a group or repeat has validation errors (which would allow finer grained guidance/highlighting of those).

Leaf/value nodes' validationState is where this approach gets more interesting (IMO). In validation.ts source order (to cross-reference with the example if helpful):

Consistent presence of message: if a condition is violated, it has a message. If the form does not define one, the engine will provide some sentinel message in its place (distinguished by its messageSource property, which is additive to the underlying TextRange type).

Consistent, binary reasoning about validity state for each condition: if the condition is satisfied, its validity will be 'satisfied'; if it is violated, its validity is 'violation'.

Both conditions (constraint, required) have a validation state at all times, and its validity property can be used to determine the condition's state consistently as a result. (This also determines whether a message is present, per 1).

Clarity of node validity, and that violations are mutually exclusive: if the node has a violation, it is not valid; if its violation is null, the node is valid; the violation may be either a constraint violation or a required violation, never both.

Also notable: BaseNode.ts retains a required state getter, but does not add a constraint getter. There was already good reason for clients to want to know whether a field is required, and that does not change when we add validation logic. But it's unclear whether the result of evaluating the constraint expression has much value to clients (beyond maybe testing purposes, but I think this API approach satisfies those purposes just as well). Instead, clients will probably be more concerned with these questions: Is the condition valid? Is the node valid? Is the form submission valid? Is there a constraint violation message to display (and if so, is it form-defined)?
Consideration for setters: behavior
At present, nothing in either of these proposed directions suggests any change in behavior which would affect client-invoked state changes. More specifically, I assume that:

the engine will and should allow clients to set any value it can already set

the engine will not and should not prevent clients from setting a value if it would violate the node's constraint condition

the engine will not and should not prevent clients from clearing a value if it would violate the node's required condition

We may consider more nuance to these questions, and APIs to accommodate greater nuance, but I expect that these are good default assumptions to start with.
Consideration for setters: return types
Currently, nothing in either approach involves a change to the signature of any client-facing setter method. It does seem likely that we'll want to consider changes to setters' return types in the future. But I think it might be wise to hold off until we take on the broader set of errors (etc) in #80 and beyond.
I do want to take the opportunity to say that I've put considerable thought into where that aspect of the API might go. We've discussed some possibilities like:

Documenting fallibility of state setters at the type level, with Result-like types.

The fact that our current "return everything" approach (each setter method returns RootNode) has been a good forcing function, but doesn't seem to provide much value to clients in real world use, so a typed fallibility approach might be appropriate for multiple state-setting call sites, perhaps all of them.

I think it's very likely both of these instincts will still hold when we expand into other areas of error conditions. I think it's even possible that validation might eventually fit into aspects of these APIs (particularly where we consider other kinds of non-crashing/non-blocking errors).
Consideration for surfacing validation state to clients
Both approaches build on current assumptions about how clients access form state. Namely that:

Clients concerned with point-in-time state will read that state directly
Clients concerned with state changes over time may supply a reactive factory, and state changes will be made reactive by that mechanism

As such, neither approach adds any new validate() method. It is my belief that both approaches provide sufficient information for a client to know whatever it needs/wants to know about validity state throughout a form instance, at the time the client needs/wants to know it.
More succinctly, reading any of these properties should be functionally equivalent to a dedicated validate() method:

AnyNode.currentState.constraint[Msg], AnyNode.currentState.required[Msg]
AnyNode.validationState.*

Consideration for varied "validation modes", filling versus submission workflows
I think it's likely that a user-facing UI client will want to surface validation state (particularly violations and their messages) differently depending on the user's current workflow.

It may be a poor user experience to surface every required violation for every blank field on form load; it may be a good user experience to surface multiple such violations prior to submission
It may be a poor user experience to repeatedly toggle the visibility of a constraint violation message while the user is typing, even if the constraint's validity is actually changing on each key press
It may be a good user experience to surface form-level validation state when a user attempts to submit a form instance, but that probably won't be the best experience midway through filling the form

I've put some thought into a minor supplement for the more expansive API approach, which could potentially aid these distinctions by tracking what kind of action most recently established the validity state for a given node. I think this is possibly worth exploring in more depth. But it seems most likely that this will be best served as a client responsibility, at least to begin with. We can revisit this if there's interest, or if such distinctions seem to be valuable beyond the main web-forms UI client.
Consideration for performance, consistency, synchronous computational guarantees
It's worth noting that all of the APIs proposed here, in both approaches, have the same implied guarantees as all existing aspects of node state:

Validity computation can be read synchronously at any time
Validity messages can be read synchronously at any time
All aspects of validation are intended to be reactive for participating clients

Naively, this is more work that the engine is expected to do at any given time. I think that we have an opportunity to reduce the impact of this by embracing an earlier design decision: every aspect of validation can be lazily computed. It will still be synchronous, but all computation may be deferred until read by a client.
This is certainly possible in the minimal approach (though it would add considerable engine-side implementation complexity). It would be vastly simpler to achieve with the more expansive approach, on the basis that each node's validationState can have an entirely separate approach to reactive synchronization.

I like the second approach of having validationState for each node, also the idea of bubbling up the validationState to subtree and root level.

What do you think of calling it Valid with boolean type instead of Validity with 'satisfied' | 'violation' in ConditionSatisfied and ConditionViolation; and ConditionViolated instead of ConditionViolation?
How would validity will behave with relevance? I am assuming non-relevant nodes will always be valid - maybe it doesn't matter 🤷♂

I like the second approach of having validationState for each node, also the idea of bubbling up the validationState to subtree and root level.

🎉
When we last discussed, it sounded like @lognaturel felt good about this approach as well. Sounds like we have a general consensus!

What do you think of calling it Valid with boolean type instead of Validity with 'satisfied' | 'violation' in ConditionSatisfied and ConditionViolation; and ConditionViolated instead of ConditionViolation?

I started here, but hesitated for a few reasons:

Anticipating the possibility that "validity" might actually take on other states beyond this binary.
The most likely prior art for this possibility is Enketo's spec extension to support more than one message for a validation condition. In Enketo, this concept is somewhat dynamic. A use case that I could easily imagine is some set of arbitrary (form-specified) constraint/message pairs. Validity of "constraint" in that framing would definitely be an enumeration (all of the form-defined possibilities, plus one non-violation case). Admittedly, this is all very speculative! But leaving open the possibility didn't seem too onerous either.
More likely, without going beyond spec in any way, it's easy to imagine validity conditions having a state like 'pending': we've deferred validation until some explicit invocation by some API to be determined. Or even 'stale': we previously computed the condition, kept its state in memory, but the value has/may have changed since (and we've deferred recomputation, similar to 'pending').

I was iffy on whether an actual boolean property would give us the type narrowing we'll want for the various API conveniences this design affords. Sometimes I just find it hard to predict when TypeScript will treat a union type as "tagged" for narrowing purposes, and when it will seem to ignore the "tag". But I just took a minute to check, and valid: true; message: ViolationMessage / valid: false; message: null does narrow exactly how we'd want when checking the valid property. So my concern here was moot.

In a vague sense, and with some hindsight, I kind of wish the API were less boolean-heavy in general. As with the first point, it's often the case that some binary state takes on additional enumerations over time. As a generality, this can happen as requirements evolve, as features glom on, or as ideal code gives way to realities like performance optimization.

All of that said, I am happy to go with valid: boolean for now for simplicity's sake. If either of the cases for enumeration become a priority, we can always revisit. I also verified that switching from a boolean to some enum would not be super risky (i.e. if (validationState.valid) { doSomethingWith(validationState.message) } will error if valid: boolean is changed to valid: some | always | truthy | union).

How would validity will behave with relevance? I am assuming non-relevant nodes will always be valid - maybe it doesn't matter 🤷♂

I think from an API perspective, your always-valid instinct is right. And in the engine runtime, I think we can safely short-circuit any non-relevant node's validity computations entirely (which would also make this a reasonable assumption for clients). It probably doesn't matter for web-forms/Vue UI, but it may affect some tests in scenario (and it could definitely be meaningful in hypothetical future tooling-oriented clients).


Add pretest script so folks can run 'test' by itself

Enables folks to "just" run yarn test

Yeah, this is redundant with using prepare. We could switch from prepare to pretest if there's a good argument for it, but we shouldn't just add pretest and leave prepare.


In progress change for IpStackRef_t

This is based off of @doshirohan's ni/grpc-device#572 and will be turned into a PR on grpc-device once that goes in.
Key features:

Allows creation of a valid nxSOCKET.
Demos working HW tests for creating nxSOCKET (works with hw I have set up at NIC).
Demos writing a test class with tests that require HW, skip if HW is not present, and a separate set of tests that don't require hw.

FYI: @reckenro @danestull @doshirohan

@astarche the ni#572 has been submitted to main.


Can't open my rails console after adding 'gcm' to Gemfile

/home/shivakumaarmgs/.rvm/gems/ruby-2.1.1/gems/gcm-0.0.9/lib/gcm.rb:5:in `<top (required)>': GCM is not a class (TypeError)
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:76:in `require'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:72:in `each'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:72:in `block in require'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:61:in `each'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:61:in `require'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.7.3/lib/bundler.rb:133:in `require'
	from /home/shivakumaarmgs/Rails/PCA/config/application.rb:15:in `<top (required)>'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/commands/commands_tasks.rb:146:in `require'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/commands/commands_tasks.rb:146:in `require_application_and_environment!'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/commands/commands_tasks.rb:68:in `console'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
	from /home/shivakumaarmgs/.rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/commands.rb:17:in `<top (required)>'
	from bin/rails:4:in `require'
	from bin/rails:4:in `<main>'

@shivakumaarmgs Facing exactly the same issue.

false alert. Conflict with pushmeup gem.

:relieved:

Even I was using Pushme up for APNS, I guess GCM would have had conflict with that. just now realized. closing this one.

@mckenn :+1:


Shep lint

A command which would check the current project against best practices. It would also be run as part of the shep deploy command. Both #91 and #127 already implement warnings and I foresee that the list of checks will continue to grow so having a system in place would be nice. Would this be worthwhile?

👍 I like this. All warnings get moved into shep lint and there is a flag to turn it off in shep deploy.

@southpolesteve @reconbot would it make sense to fail a deploy if the linter finds something?


telemetry changes for native naming

For #

[ ] Pull request represents a single change (i.e. not fixing disparate/unrelated things in a single PR).
[ ] Title summarizes what is changing.
[ ] Has a news entry file (remember to thank yourself!).
[ ] Appropriate comments and documentation strings in the code.
[ ] Has sufficient logging.
[ ] Has telemetry for enhancements.
[ ] Unit tests & system/integration tests are added/updated.
[ ] Test plan is updated as appropriate.
[ ] package-lock.json has been regenerated by running npm install (if dependencies have changed).
[ ] The wiki is updated with any design decisions/details.

Some quick renames via @jmew .


Add actions for performing IaC vulnerability scanning

Action for finding changed directories per the current PR
Uses trivy (https://github.com/aquasecurity/trivy-action) for performing the actual scanning of Terraform modules

@lghakamo-paf What's the status on this one?

Closing as Stale


Strict Mode for file types

Currently, the strict mode can only get applied to all or none files. Some file types, like JSON or YAML should always get indented as defined, because there are no special linters (eg. JS or PHP) which allow exceptions.
So, instead of making strict mode option boolean, it should get converted to a string, which allows to define a comma-separated list of file patterns, which should have strict mode enabled.
Then, those variants of using the option exist:

No strict mode option given (= strict mode off)
Strict mode given with empty string (= strict mode on)
Strict mode given with comma separated string (=strict mode only applies to given file patterns)

I'm thinking about to not implement this feature. You could already achieve this behavior by a second run of ec binary, using strict mode but use file patterns in arguments (eg. *.json *.yaml *.yml) to limit the strict checks to given file types.


Support for private git servers / self-hosting.

I want to add svg image in my private repository? Support?

I'd also like to know -- it's a great crate and I'd love to use it in my company's READMEs, but they are internal.

Some ideas have come up recently about enabling self hosting of a deps.rs instance with configuration for internal code hosting URLs and authentication.

The interesting question would be: How do we fetch the Cargo.toml file? For the hosters currently implemented we use their raw-file URLs to avoid ending up cloning lots of data. I just looked at how Gitea and Gogs do this and they both have different URLs, with Gogs being similar to Gitlab. We could in principle implement the this for the most common self-hosted solutions, but I don't know if we want to maintain this long-term. Also, linking to a self-hosted repo would then always require to specify the software hosting the repo.

Maybe a bit cumbersome but how about an API that is utilized through GitHub Action which then creates the actual badge file. For the latter and commit it into a badge branch https://github.com/marketplace/actions/badge-action can be used

Thanks for your suggestion! 🚀
I just want to make sure I understand this correctly: So you mean that the repository in question would trigger a Github Action flow that calls deps.rs via an API that somehow submits the Cargo.toml file as parameter and then creates the badge?
Theoretically The general concept sounds like a cool idea!
But a potential problem there is that the information displayed on the badge itself would be outdated at some point. If the project is no longer updated, the badge will in a few months still say "up to date", which is not true and will therefore somehow miss the purpose of the project.
Also, that solution would only work for private Github repositories, but not for your own git servers. So that approach might still require a step or two to become a workable solution 🤔

How about that:

Provide a deps.rs executable via Docker that takes Cargo.toml files as input and then generates a static deps.rs page. By including a bit javascript the site can tell if the overall report is up to date.
GitHub action to feed the Docker container with Cargo.toml files and to commit the generated website to the repo. Ideally only the json report is being commited in case the page is already there.
The generated website is published via GitHub pages.


 I'm gonna rewrite it with RetroFit.

Holy balls. I didn't realize how bad the code I stole was. No wonder it was so garbage.


Add flag to enable/disable sending messages to producer queue

This is useful for users that are not interested on sending
flow data to message queue and they simply consume the output
from console with verbose flag set, i.e.:
vflow -producer-enabled=false -verbose
If not provided, it will just work as is now.

@rcarrillocruz Thanks!


Moved NetworkStartPosition to Components.

This is a component, and as such should be in Components. Nothing depends on this, get it out of 'core'.

On hold pending internal decisions

you aren't wrong.
but from a practical point of view, people definitely need NetworkStartPosition in their projects. I would consider it 'core'.
for example, in uMMORPG I have a custom start position, but it does inherit from NetworkStartPosition.
unlike my custom prox checker, which doesn't inherit from mirror one. and unlike my custom transform, which doesn't inherit from mirror transform.
closing this for now, sorry. we need to test if we can weaver mirror.dll - then we wouldn't have those discussions and could leave it all in one folder


AccessToken.decode doesn't exist

Been looking around in the code as to what is generating the following error:
Access Token verify with verifiable JWT and mismatching audience should provide an error description
I can't find any mention of the AccessToken.decode function
I wouldn't mind taking a crack at it if you can tell me a little about what exactly it is supposed to return.

AccessToken.decode is JWT.decode from the anvil-connect-jwt library.
The error is happening due to https://github.com/kjur/jsrsasign/issues/129

Closing in favour of https://github.com/anvilresearch/connect-nodejs/issues/21


fix bug using categories

FIx:
1)It is necessary to add a check for displaying models in categories for which is_visible or is_accessible are equal to False. Because now they are displayed in any case, even if there are no rights.
2)  if there are no models in the category for which is_visible and is_accessible are equal to True, then the category does not need to be shown.

Hello, my friend)
PR ready to be merged

Hello @aminalaee
Please check the code. I really need my PR approved


Feature cookies

please review @wcawijngaards, @wtoorop
TODO:

unit tests
check on wire that the cookies are propagated to the child processes
in case the cookie store file is corrupt the first n successfully processed entries overwrite random cookies

We'll merge in features/cookies first and then review...


Enforce newlines between operands of ternary expressions if the expression spans multiple lines (multiline-ternary)

https://eslint.org/docs/rules/multiline-ternary
Desired config:
/*eslint multiline-ternary: ["error", "always-multiline"]*/

JavaScript allows operands of ternary expressions to be separated by newlines, which can improve the readability of your program.
For example:
var foo = bar > baz ? value1 : value2;

The above can be rewritten as the following to improve readability and more clearly delineate the operands:
var foo = bar > baz ?
    value1 :
    value2;

Rule Details
This rule enforces or disallows newlines between operands of a ternary expression.
Note: The location of the operators is not enforced by this rule. Please see the operator-linebreak rule if you are interested in enforcing the location of the operators themselves.
always-multiline
Examples of incorrect code for this rule with the "always-multiline" option:
/*eslint multiline-ternary: ["error", "always-multiline"]*/

foo > bar ? value1 :
    value2;

foo > bar ?
    value1 : value2;

foo > bar &&
    bar > baz ? value1 : value2;

Examples of correct code for this rule with the "always-multiline" option:
/*eslint multiline-ternary: ["error", "always-multiline"]*/

foo > bar ? value1 : value2;

foo > bar ?
    value1 :
    value2;

foo > bar ?
    (baz > qux ? value1 : value2) :
    value3;

foo > bar ?
    (baz > qux ?
        value1 :
        value2) :
    value3;

foo > bar &&
    bar > baz ?
        value1 :
        value2;

This rule seems to have a bug, which I've filed against ESLint here: https://github.com/eslint/eslint/issues/13782

Nevermind, I was misunderstanding the rule.

3% ecosystem impact.
1..210
# tests 210
# pass  204
# fail  6

PRs need to be sent to these packages:

[ ] assets-webpack-plugin
[ ] eslint-plugin-standard
[ ] browser-supports-log-styles
[ ] couchdb-push
[ ] aerospike
[ ] chrome-net

Sorry for dragging up such an old issue. My team just noticed this since we upgraded to ts-standard 11 today 😅
Just wanted to share some unfortunate diffs that this generated:

-      ${printerName == null ? '' : `
+      ${printerName == null
+        ? ''
+        : `

           ${escapeHtml(printerName)}

       `}

-      ${!isCopy ? '' : `
+      ${!isCopy
+        ? ''
+        : `

KOPIA

${escapeHtml(formatDateTime(now, 'yyyy-MM-dd HH:mm:ss', timeZone))}

         _created_at: requestTime,
         _id: id,
         _updated_at: requestTime,
-        employee: employee == null || employeeGroups == null ? null : {
-          _created_at: employee._created_at,
-          _id: employee._id,
-          _updated_at: employee._updated_at,
-          name: employee.name,
-          groups: employeeGroups
-        },
+        employee: employee == null || employeeGroups == null
+          ? null
+          : {
+              _created_at: employee._created_at,
+              _id: employee._id,
+              _updated_at: employee._updated_at,
+              name: employee.name,
+              groups: employeeGroups
+            },
         orderIntentId,
         paymentMethodId: paymentMethod._id,

       const html = await renderSlipFromOrder(restaurant, orders, printerQueue ?? null, isCopy ?? false, dataloader)

-      return html == null ? null : {
-        html,
-        needsPrinting: null,
-        printerQueueId: printerQueue?._id ?? null,
-        restaurantId: restaurant._id
-      }
+      return html == null
+        ? null
+        : {
+            html,
+            needsPrinting: null,
+            printerQueueId: printerQueue?._id ?? null,
+            restaurantId: restaurant._id
+          }
     }
   }
 }

-          ${servingLocation?.tableName == null || servingLocation.tableName === '' ? '' : `
+          ${servingLocation?.tableName == null || servingLocation.tableName === ''
+            ? ''
+            : `

Utlämnas till: ${escapeHtml(servingLocation.tableName)}

           `}

         {
           $set: {
-            alternativeItems: patch.alternativeItems == null ? undefined : ({
-              alternativeItems: patch.alternativeItems?.map(item => ({
-                countableUsage: item.countableUsage ?? undefined,
-                isDefault: item.isDefault ?? false,
-                name: item.name,
-                productId: item.addonProductId ?? undefined
-              }))
-            }),
+            alternativeItems: patch.alternativeItems == null
+              ? undefined
+              : ({
+                  alternativeItems: patch.alternativeItems?.map(item => ({
+                    countableUsage: item.countableUsage ?? undefined,
+                    isDefault: item.isDefault ?? false,
+                    name: item.name,
+                    productId: item.addonProductId ?? undefined
+                  }))
+                }),
             forceChoice: patch.forceChoice ?? undefined,
             isCountable: patch.isCountable ?? undefined,
             maxChoices: patch.maxChoices ?? undefined,


Added component-wise min and max functions for vectors

Implements changes needed to solve this issue: https://github.com/godotengine/godot/issues/45320

LGTM (need to fix the static checks)
Would be good to add tests for the new methods

I think that I got the changes right this time, let me know if you think I should make any change in the variant code.

Better but still not good. Now they fail if you use them with a combination of ints and floats. Would be good to add unit tests for this case too.

As you have seen on the issue you linked, the asked feature is controversial. Several users (including myself) are not happy with the fact max(A,B) would be able to return something different from A or B.
According to a discussion we had with other maintainers, we are more leaning towards removing this helper for values that are not basic types like int, float, bool (basically everywhere the current behavior can confuse users).
We however believe the component-wise max/min could be exposed, either as a method of Vector2/3  (like, v_A.max(v_B)) or as some static method Vector2.max(v_A, v_B). So I guess part of this PR could be kept. We might ask for a rename of the method though.

Thanks!

This has yet to be implemented for the GDScript side... Any progress?

No it has been implemented for scripting a month ago:

https://github.com/godotengine/godot/pull/80223

No it has been implemented for scripting a month ago:

https://github.com/godotengine/godot/pull/80223

After looking a bit further into it, it seems that it was only implemented for Godot Latest/4.3. Any plans to cherry-pick this change for Godot 4.2 and lower?

No, this is a feature and not a bugfix.


About the training time

Thanks for sharing your great work!
Could you please tell me how long do the pre-training stage and fine-tuning stage take?
When I pre-train a model on REVERIE using the provided scrips, I find it costs much more time than the baseline DUET. Especially, the data loading process in "get_traj_pano_fts" that loads the knowledge feature is time-consuming. Is this normal?
Thanks!

Due to the large size of feature files, file reading becomes the main bottleneck during training.
We recommend optimizing the training speed from the following aspects: 1) cache features into memory (this requires a machine with very sufficient memory, greater than 512GB); 2) Using multithreading to read feature files, we consider updating this functionality later in the code.


Update zio, zio-test, zio-test-sbt to 2.0.14

About this PR
📦 Updates

dev.zio:zio
dev.zio:zio-test
dev.zio:zio-test-sbt

from 2.0.4 to 2.0.14
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "dev.zio" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "dev.zio" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #68.


Use the correct indentation

Once upon a time in the kingdom of Codevania, there lived a diligent programmer named Hans. Hans was known throughout the land for his impeccable coding skills and his commitment to creating beautiful and harmonious software. In Codevania, where order and clarity were highly valued, there existed a long-standing debate about the use of tabs and spaces.
The kingdom had been divided into two factions: the Tabs and the Spaces. The Tabs were fond of their quick, succinct approach, while the Spaces cherished the neat and uniform appearance of their code. This debate had persisted for ages, causing strife among the programmers.
One day, as Hans was perusing through the codebase of a grand project, he noticed a lack of unity. Tabs and spaces coexisted in a chaotic dance, creating a dissonance that troubled Hans's meticulous nature. He pondered upon this challenge and decided that a harmonious solution was needed.
With a humble heart and a determined spirit, Hans set out to convert the tabs to spaces in his code. He meticulously combed through each line, ensuring that the transformation was seamless and graceful. As he worked, the code seemed to breathe a sigh of relief, as if it had found its true form.
Word spread quickly through the kingdom about Hans's noble quest to bring order to the codebase. The Tabs and the Spaces, witnessing the transformation, started to appreciate the newfound unity. The once-divided programmers found common ground in the beauty of consistent indentation.
Hans's efforts were not in vain. The pull request was submitted, and the entire kingdom awaited the verdict. The wise code reviewers recognized the importance of harmony and consistency. The pull request was accepted with open arms, and Codevania rejoiced in the triumph of unity over discord.
And so, in the spirit of Hans Christian Andersen's tales, the story teaches us that even in the seemingly mundane act of converting tabs to spaces, there lies the potential for unity and harmony in the kingdom of Codevania.
tl;dr
USE SPACES

Dan, thanks a lot for the pull request. It is probably the best I have ever seen!


Added support for Rails 5

Made a few changes to make RocketPants support Rails 5.

Any plans to get this into master @Sutto ?

Hey @parse, sorry I missed this - I've been ignoring this repository for silly reasons.
Does this break backwards compat? Travis is broken so I can't check there, but will try to fix Travis ASAP to make sure I know.
If not broken, I'll merge it in asap and release.
Thank you for contributing - I appreciate it and really regret being pretty bad at running this. I'm looking to add some more people to help manage it.

I have not tested it on rails 4 sorry. I've been using it on my rails 5 setup for about a year now so it's been pretty stable.
Awesome that you are coming back to this now!

I've been using this fork while upgrading to Rails 5, and it throws one deprecation warning when running tests (over and over again):
DEPRECATION WARNING: Using positional arguments in functional tests has been deprecated,
in favor of keyword arguments, and will be removed in Rails 5.1.

Deprecated style:
get :show, { id: 1 }, nil, { notice: "This is a flash message" }

New keyword style:
get :show, params: { id: 1 }, flash: { notice: "This is a flash message" },
  session: nil # Can safely be omitted.
 (called from process at /Users/becky/.gem/ruby/2.3.3/bundler/gems/rocket_pants-a87933747c0f/lib/rocket_pants/test_helper.rb:107)

This is being thrown in non-Rocket-Pants-related controller specs, when the request in question doesn't actually have any parameters, ie. get :new.
If I add empty params (eg. get :new, params: {}) or remove the RocketPants test helper, the deprecation notice goes away.

Presumably something having issues with our implementation of the test helpers (get etc) in that case?

Yeah - the process method in the test helper instantiates the params argument to add the version param if necessary. There's already clauses in there for Rails 3 and Rails 4; a separate one might need to be added for Rails 5.

I'm aware of the depreciations being thrown, in 5.1rc1 they have been
removed to it completely fails.
Currently don't have time so if anyone is up for it, I would love to get a
PR on it and try to land this into master.
On Wed, 29 Mar 2017 at 03:53, Rebecca Skinner<EMAIL_ADDRESS>wrote:

Yeah - the process method in the test helper instantiates the params
argument to add the version param if necessary. There's already clauses in
there for Rails 3 and Rails 4; a separate one might need to be added for
Rails 5.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Sutto/rocket_pants/pull/143#issuecomment-289958234,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADrKsfFVB07fCoIyTVdbtgqwDcLiqbaks5rqbmbgaJpZM4Hj6_F
.

@sevenseacat The tests have now been fixed for Rails 5. Enjoy!

👍

Will this PR be merged?

Would love to get this merged in. After looking through all the various replacement options now that I've switched to Rails 5.1, I still massively prefer this gem.

Does this still work for Rails 4 and 3? 3 is less of a concern, but Rails 4 should be maintained.
If w can make sure it works on that and doesn't break other stuff, I'm happy to merge it in.

@Sutto how can we asure that? Fixing the tests?

@avitus I submitted a PR here: https://github.com/Sutto/api_smith/pull/12

Support for Rails 5.1 was kindly added by @MatayoshiMariano

This now works for Rails 5.2 as well. @Zhong-z kindly added support for Bugsnag v6.
Any chance we can get this merged and cut a new major version perhaps to avoid breaking support for Rails 4. (FYI, I am not using Rails 4, but I haven't heard about any issues on it for people using this fork)

@parse pagination not working? missing it on the hash


luci-mod-system:  Add getLocaltime to the ACL list

Recent updates require access to getLocaltime for System->System page

Signed-off-by: Gerry Rozema<EMAIL_ADDRESS>

Why is this needed? The sole user of luci/getLocaltime got dropped with 07569c5af23d74bad8b78905b25d7e85bd2d3141

Why is this needed? The sole user of luci/getLocaltime got dropped with 07569c5

ok, I should have put this against 21.02.  I checked that out this morning, and built. got access errors on getLocaltime
I can re-sbmit against the 21.02 branch which does require it.

For OpenWrt 21.02 the usage got dropped in 68815c88b0ebcfd0116070510a4c43ccff1d0310 - maybe you need to clear your browser cache or something?


Handle Smart Layout in Symbols

smart layout in symbols: https://www.sketch.com/docs/symbols/smart-layout/

@kdzwinel do you think that there is any way to test it e2e?


ceph_disk.main.FilesystemTypeError: Cannot discover filesystem type

I'm running ceph/daemon:tag-build-master-jewel-ubuntu-14.04 osd with following environment variables:
-e OSD_DEVICE=/dev/sda \
-e OSD_JOURNAL=/dev/nvme0n1p1 \
-e KV_TYPE=consul \
-e KV_IP=<IP_ADDRESS> \
-e KV_PORT=8500

and I get following error ceph_disk.main.FilesystemTypeError: Cannot discover filesystem type: device /dev/sda: Line is truncated:
docker logs -f ceph-osd-sda
2016-07-06T09:07:25Z vm04 confd[7674]: INFO Backend set to consul
2016-07-06T09:07:25Z vm04 confd[7674]: INFO Starting confd
2016-07-06T09:07:25Z vm04 confd[7674]: INFO Backend nodes set to vm01.se-ix.delta.prod:8500
2016-07-06T09:07:25Z vm04 confd[7674]: INFO Target config /etc/ceph/ceph.conf out of sync
2016-07-06T09:07:25Z vm04 confd[7674]: INFO Target config /etc/ceph/ceph.conf has been updated
Adding bootstrap keyrings
No bootstrapped OSDs found; trying ceph-disk
HEALTH_OK
command: Running command: /usr/bin/ceph-osd --cluster=ceph --show-config-value=fsid
command: Running command: /usr/bin/ceph-osd --check-allows-journal -i 0 --cluster ceph
command: Running command: /usr/bin/ceph-osd --check-wants-journal -i 0 --cluster ceph
command: Running command: /usr/bin/ceph-osd --check-needs-journal -i 0 --cluster ceph
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /usr/bin/ceph-osd --cluster=ceph --show-config-value=osd_journal_size
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mkfs_type
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mkfs_options_xfs
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mount_options_xfs
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_fs_mount_options_xfs
get_dm_uuid: get_dm_uuid /dev/nvme0n1p1 uuid path is /sys/dev/block/259:1/dm/uuid
prepare_device: Journal /dev/nvme0n1p1 is a partition
get_dm_uuid: get_dm_uuid /dev/nvme0n1p1 uuid path is /sys/dev/block/259:1/dm/uuid
prepare_device: OSD will not be hot-swappable if journal is not the same device as the osd data
command: Running command: /sbin/blkid -o udev -p /dev/nvme0n1p1
prepare_device: Journal /dev/nvme0n1p1 was not prepared with ceph-disk. Symlinking directly.
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
set_data_partition: Creating osd partition on /dev/sda
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
ptype_tobe_for_name: name = data
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
create_partition: Creating data partition num 1 size 0 on /dev/sda
command_check_call: Running command: /sbin/sgdisk --largest-new=1 --change-name=1:ceph data --partition-guid=1:96b5036f-3aea-4711-b9e5-dbc32377b491 --typecode=1:89c57f98-2fe5-4dc0-89c1-f3ad0ceff2be --mbrtogpt -- /dev/sda
Creating new GPT entries.
The operation has completed successfully.
update_partition: Calling partprobe on created device /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command: Running command: /sbin/partprobe /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda1 uuid path is /sys/dev/block/8:1/dm/uuid
populate_data_path_device: Creating xfs fs on /dev/sda1
command_check_call: Running command: /sbin/mkfs -t xfs -f -i size=2048 -f -- /dev/sda1
meta-data=/dev/sda1              isize=2048   agcount=4, agsize=36593599 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=146374395, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=71471, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
mount: Mounting /dev/sda1 on /var/lib/ceph/tmp/mnt.5aK2XK with options noatime,inode64
command_check_call: Running command: /bin/mount -t xfs -o noatime,inode64 -- /dev/sda1 /var/lib/ceph/tmp/mnt.5aK2XK
populate_data_path: Preparing osd data dir /var/lib/ceph/tmp/mnt.5aK2XK
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.5aK2XK/ceph_fsid.7735.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.5aK2XK/fsid.7735.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.5aK2XK/magic.7735.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.5aK2XK/journal_uuid.7735.tmp
adjust_symlink: Creating symlink /var/lib/ceph/tmp/mnt.5aK2XK/journal -> /dev/nvme0n1p1
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.5aK2XK
unmount: Unmounting /var/lib/ceph/tmp/mnt.5aK2XK
command_check_call: Running command: /bin/umount -- /var/lib/ceph/tmp/mnt.5aK2XK
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command_check_call: Running command: /sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d -- /dev/sda
The operation has completed successfully.
update_partition: Calling partprobe on prepared device /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command: Running command: /sbin/partprobe /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command_check_call: Running command: /sbin/udevadm trigger --action=add --sysname-match sda1
main_activate: path = /dev/sda
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /sbin/blkid -p -s TYPE -o value -- /dev/sda
Traceback (most recent call last):
  File "/usr/sbin/ceph-disk", line 9, in <module>
    load_entry_point('ceph-disk==1.0.0', 'console_scripts', 'ceph-disk')()
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 4994, in run
    main(sys.argv[1:])
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 4945, in main
    args.func(args)
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 3299, in main_activate
    reactivate=args.reactivate,
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 3009, in mount_activate
    e,
ceph_disk.main.FilesystemTypeError: Cannot discover filesystem type: device /dev/sda: Line is truncated:

And then the docker container ends up in a restart loop that looks like this
2016-07-06T09:07:37Z vm04 confd[9234]: INFO Backend set to consul
2016-07-06T09:07:37Z vm04 confd[9234]: INFO Starting confd
2016-07-06T09:07:37Z vm04 confd[9234]: INFO Backend nodes set to vm01.se-ix.delta.prod:8500
Adding bootstrap keyrings
No bootstrapped OSDs found; trying ceph-disk
HEALTH_OK
ERROR- It looks like this device is an OSD, set OSD_FORCE_ZAP=1 to use this device anyway and zap its content

Problem appears to be that blkid is running against /dev/sda instead of /dev/sda1..
This is blocking me from deploying new dockerized ceph OSD's. I'm stuck here.. 😞
I thought #313 would fix this for me, but it appears not to since i'm running latest tag-build-master-jewel-ubuntu-14.04

Oops, I forgot to push a new version of the branch, I just did, please wait for the build to finish :)

I'm closing this, feel free to re-open if the new version of the image doesn't solve this.

Hi, the new image doesn't fix this issue..
2016-07-07T09:17:53Z vm04 confd[16319]: INFO Backend set to consul
2016-07-07T09:17:53Z vm04 confd[16319]: INFO Starting confd
2016-07-07T09:17:53Z vm04 confd[16319]: INFO Backend nodes set to vm01.se-ix.delta.prod:8500
2016-07-07T09:17:53Z vm04 confd[16319]: INFO Target config /etc/ceph/ceph.conf out of sync
2016-07-07T09:17:53Z vm04 confd[16319]: INFO Target config /etc/ceph/ceph.conf has been updated
Adding bootstrap keyrings
No bootstrapped OSDs found; trying ceph-disk
HEALTH_OK
command: Running command: /usr/bin/ceph-osd --cluster=ceph --show-config-value=fsid
command: Running command: /usr/bin/ceph-osd --check-allows-journal -i 0 --cluster ceph
command: Running command: /usr/bin/ceph-osd --check-wants-journal -i 0 --cluster ceph
command: Running command: /usr/bin/ceph-osd --check-needs-journal -i 0 --cluster ceph
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /usr/bin/ceph-osd --cluster=ceph --show-config-value=osd_journal_size
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mkfs_type
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mkfs_options_xfs
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mount_options_xfs
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_fs_mount_options_xfs
get_dm_uuid: get_dm_uuid /dev/nvme0n1p1 uuid path is /sys/dev/block/259:1/dm/uuid
prepare_device: Journal /dev/nvme0n1p1 is a partition
get_dm_uuid: get_dm_uuid /dev/nvme0n1p1 uuid path is /sys/dev/block/259:1/dm/uuid
prepare_device: OSD will not be hot-swappable if journal is not the same device as the osd data
command: Running command: /sbin/blkid -o udev -p /dev/nvme0n1p1
prepare_device: Journal /dev/nvme0n1p1 was not prepared with ceph-disk. Symlinking directly.
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
set_data_partition: Creating osd partition on /dev/sda
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
ptype_tobe_for_name: name = data
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
create_partition: Creating data partition num 1 size 0 on /dev/sda
command_check_call: Running command: /sbin/sgdisk --largest-new=1 --change-name=1:ceph data --partition-guid=1:1e1f0889-092e-42cf-ab9c-2082bc3edb3c --typecode=1:89c57f98-2fe5-4dc0-89c1-f3ad0ceff2be --mbrtogpt -- /dev/sda
Creating new GPT entries.
The operation has completed successfully.
update_partition: Calling partprobe on created device /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command: Running command: /sbin/partprobe /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda1 uuid path is /sys/dev/block/8:1/dm/uuid
populate_data_path_device: Creating xfs fs on /dev/sda1
command_check_call: Running command: /sbin/mkfs -t xfs -f -i size=2048 -f -- /dev/sda1
meta-data=/dev/sda1              isize=2048   agcount=4, agsize=36593599 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=146374395, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=71471, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
mount: Mounting /dev/sda1 on /var/lib/ceph/tmp/mnt.nKAxol with options noatime,inode64
command_check_call: Running command: /bin/mount -t xfs -o noatime,inode64 -- /dev/sda1 /var/lib/ceph/tmp/mnt.nKAxol
populate_data_path: Preparing osd data dir /var/lib/ceph/tmp/mnt.nKAxol
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.nKAxol/ceph_fsid.16376.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.nKAxol/fsid.16376.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.nKAxol/magic.16376.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.nKAxol/journal_uuid.16376.tmp
adjust_symlink: Creating symlink /var/lib/ceph/tmp/mnt.nKAxol/journal -> /dev/nvme0n1p1
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.nKAxol
unmount: Unmounting /var/lib/ceph/tmp/mnt.nKAxol
command_check_call: Running command: /bin/umount -- /var/lib/ceph/tmp/mnt.nKAxol
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command_check_call: Running command: /sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d -- /dev/sda
The operation has completed successfully.
update_partition: Calling partprobe on prepared device /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command: Running command: /sbin/partprobe /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command_check_call: Running command: /sbin/udevadm trigger --action=add --sysname-match sda1
main_activate: path = /dev/sda
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /sbin/blkid -p -s TYPE -o value -- /dev/sda
Traceback (most recent call last):
  File "/usr/sbin/ceph-disk", line 9, in <module>
    load_entry_point('ceph-disk==1.0.0', 'console_scripts', 'ceph-disk')()
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 4994, in run
    main(sys.argv[1:])
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 4945, in main
    args.func(args)
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 3299, in main_activate
    reactivate=args.reactivate,
  File "/usr/lib/python2.7/dist-packages/ceph_disk/main.py", line 3009, in mount_activate
    e,
ceph_disk.main.FilesystemTypeError: Cannot discover filesystem type: device /dev/sda: Line is truncated:

Container restarts
2016-07-07T09:18:20Z vm04 confd[17994]: INFO Backend set to consul
2016-07-07T09:18:20Z vm04 confd[17994]: INFO Starting confd
2016-07-07T09:18:20Z vm04 confd[17994]: INFO Backend nodes set to vm01.se-ix.delta.prod:8500
Adding bootstrap keyrings
No bootstrapped OSDs found; trying ceph-disk
HEALTH_OK
ERROR- It looks like this device is an OSD, set OSD_FORCE_ZAP=1 to use this device anyway and zap its content

I can not reproduce this. I'm using prepare and activate steps.
Are you sure the device you are using (sda) is valid and not your system disk?

Yes I'm sure, and it's not just /dev/sda
/dev/sda
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
/dev/sdf
/dev/sdg
/dev/sdh
I just pasted logs for /dev/sda, but all are the same..
My plan is to use "Without OSD_TYPE" for the simple reason of making it more simple to automate.
Documentation says:

disk is used if no bootstrapped OSD is found. OSD_FORCE_ZAP=1 must be set at this point.
activate is used if a bootstrapped OSD is found and OSD_DEVICE is also provided.
directory is used if a bootstrapped OSD is found and no OSD_DEVICE is provided.

So basically I have a chef recipe that for the first time starts the OSD's without a specified type and the disks will get bootstrapped since type disk will be used..
And whenever I need to restart, update or something the type activate will be used cause the disks are already bootstrapped.
This way I don't have to build advanced logic to prepare the disks, check if they are prepared, don't have build/start containers with first type prepare, then wait til they finish and remove the containers and then start new containers with type activate.. It just adds unnecessary complexity to the cookbook.

Somehow ceph-disk is running the blkid command on the raw device and not the partition, that's the problem. The line  main_activate: path = /dev/sda should use /dev/sda1.
I'm currently pushing a change to improve the discovery feature for osd scenarios.

Ok, how can I help, should I file a bug/issue about ceph-disk in ceph/ceph?

@Raboo yes I think you should, try to open an issue on http://tracker.ceph.com/

created a issue on ceph tracker
http://tracker.ceph.com/issues/16649

@Raboo cool, I'm closing this as this is not a ceph-docker issue ;)

Question
I ran ceph-disk prepare manually on the host directly.
And it didn't really run /sbin/blkid against /dev/sda*. Pasted the output below.
It did run blkid against the journal partition. So this blkid against /dev/sda, is it perhaps the ceph-disk activate command that runs into this error?
https://github.com/ceph/ceph-docker/blob/master/ceph-releases/jewel/ubuntu/14.04/daemon/entrypoint.sh#L472
Perhaps it should use $(dev_part ${OSD_DEVICE} 1) instead of ${OSD_DEVICE} when activating?
# ceph-disk -v prepare /dev/sda /dev/nvme0n1p1
command: Running command: /usr/bin/ceph-osd --cluster=ceph --show-config-value=fsid
command: Running command: /usr/bin/ceph-osd --check-allows-journal -i 0 --cluster ceph
command: Running command: /usr/bin/ceph-osd --check-wants-journal -i 0 --cluster ceph
command: Running command: /usr/bin/ceph-osd --check-needs-journal -i 0 --cluster ceph
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /usr/bin/ceph-osd --cluster=ceph --show-config-value=osd_journal_size
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mkfs_type
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_fs_type
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mkfs_options_xfs
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_fs_mkfs_options_xfs
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_mount_options_xfs
command: Running command: /usr/bin/ceph-conf --cluster=ceph --name=osd. --lookup osd_fs_mount_options_xfs
get_dm_uuid: get_dm_uuid /dev/nvme0n1p1 uuid path is /sys/dev/block/259:1/dm/uuid
prepare_device: Journal /dev/nvme0n1p1 is a partition
get_dm_uuid: get_dm_uuid /dev/nvme0n1p1 uuid path is /sys/dev/block/259:1/dm/uuid
prepare_device: OSD will not be hot-swappable if journal is not the same device as the osd data
command: Running command: /sbin/blkid -o udev -p /dev/nvme0n1p1
prepare_device: Journal /dev/nvme0n1p1 was not prepared with ceph-disk. Symlinking directly.
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
set_data_partition: Creating osd partition on /dev/sda
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
ptype_tobe_for_name: name = data
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
create_partition: Creating data partition num 1 size 0 on /dev/sda
command_check_call: Running command: /sbin/sgdisk --largest-new=1 --change-name=1:ceph data --partition-guid=1:8781a4f5-bea3-4c73-897f-22707972783a --typecode=1:89c57f98-2fe5-4dc0-89c1-f3ad0ceff2be --mbrtogpt -- /dev/sda
Creating new GPT entries.
The operation has completed successfully.
update_partition: Calling partprobe on created device /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command: Running command: /sbin/partprobe /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
get_dm_uuid: get_dm_uuid /dev/sda1 uuid path is /sys/dev/block/8:1/dm/uuid
populate_data_path_device: Creating xfs fs on /dev/sda1
command_check_call: Running command: /sbin/mkfs -t xfs -f -i size=2048 -- /dev/sda1
meta-data=/dev/sda1              isize=2048   agcount=4, agsize=36593599 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=146374395, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=71471, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
mount: Mounting /dev/sda1 on /var/lib/ceph/tmp/mnt.aZm9q3 with options noatime,inode64
command_check_call: Running command: /bin/mount -t xfs -o noatime,inode64 -- /dev/sda1 /var/lib/ceph/tmp/mnt.aZm9q3
populate_data_path: Preparing osd data dir /var/lib/ceph/tmp/mnt.aZm9q3
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.aZm9q3/ceph_fsid.10706.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.aZm9q3/fsid.10706.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.aZm9q3/magic.10706.tmp
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.aZm9q3/journal_uuid.10706.tmp
adjust_symlink: Creating symlink /var/lib/ceph/tmp/mnt.aZm9q3/journal -> /dev/nvme0n1p1
command: Running command: /bin/chown -R ceph:ceph /var/lib/ceph/tmp/mnt.aZm9q3
unmount: Unmounting /var/lib/ceph/tmp/mnt.aZm9q3
command_check_call: Running command: /bin/umount -- /var/lib/ceph/tmp/mnt.aZm9q3
get_dm_uuid: get_dm_uuid /dev/sda uuid path is /sys/dev/block/8:0/dm/uuid
command_check_call: Running command: /sbin/sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d -- /dev/sda
The operation has completed successfully.
update_partition: Calling partprobe on prepared device /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command: Running command: /sbin/partprobe /dev/sda
command_check_call: Running command: /sbin/udevadm settle --timeout=600
command_check_call: Running command: /sbin/udevadm trigger --action=add --sysname-match sda1

@Raboo you're right this should be $(dev_part ${OSD_DEVICE} 1) .
Would you mind testing and then doing a PR?
Thanls!

I did test, and it comes a lot further, but now fails cause it can't resolve the id..
My guess is that it fails in:
https://github.com/ceph/ceph-docker/blob/master/ceph-releases/jewel/ubuntu/14.04/daemon/entrypoint.sh#L610
start_daemon: Starting ceph osd.10...
command_check_call: Running command: /sbin/initctl emit --no-wait -- ceph-osd cluster=ceph id=10
df: '/var/lib/ceph/osd/ceph-/': No such file or directory
2016-07-11 13:08:40.836681 7ff972d6a700 -1 auth: unable to find a keyring on /var/lib/ceph/osd/ceph-/keyring: (2) No such file or directory
2016-07-11 13:08:40.836732 7ff972d6a700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2016-07-11 13:08:40.836746 7ff972d6a700  0 librados: osd. initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound

Ok, I've tested this pull request and it works for me :-)
https://github.com/ceph/ceph-docker/pull/333

Thanks!


Z80: fix CPIR / CPDR conditions

small bug in CPIR loop condition
found by @depili: https://github.com/NationalSecurityAgency/ghidra/issues/2343

Cherry-picked into 9.2 and master


Add linting to CI and/or test targets?

This has been opened before at https://github.com/getodk/central-backend/issues/14.
Currently eslint is not run by any of the test-related make targets, or on CircleCI.  Would it be helpful to include it?  It should be an even quicker test/fail than running mocha tests, so adding it as a dependency to the test and test-full targets could be helpful.

We run the linter in CircleCI for Frontend, and I think that's worked well for us: that setup has been successful in catching things. I'd support adding linting to CircleCI on Backend. @ktuite, what do you think?
I feel less sure about having test-related make targets also lint: the two things feel somewhat separate to me. Then again, maybe that'd be a good way to ensure that we're consistent about both testing and linting. And with #503, linting will often be quite speedy. I could go either way! @ktuite, do you have a preference?

I feel less sure about having test-related make targets also lint: the two things feel somewhat separate to me.

I see eslint as a tool for testing the correctness of the code in the same way that mocha is.  From this perspective, there are 3 stages of testing:

lint
unit
integration

I could see that! I also had the thought that we could add a new command to do both, something like lint-and-test. But that probably doesn't make sense given that we have a few different test commands: we wouldn't want to have a separate lint-and-test command corresponding to each of those.
Actually, thinking of those different test commands, I'm realizing that one is specifically for unit tests and one is for integration tests. Since those two each correspond to an individual stage in your list, maybe it makes sense for them to continue to be independent. Specifically, I'm thinking that test-unit and test-integration shouldn't also lint (and test-integration shouldn't run test-unit). But I could see the case for the more expansive test and test-full commands also linting.
One other variable to throw in here is that Frontend also separates linting and testing, and I think it'd be harder there to combine the two. Would it be confusing if running tests lints in Backend but doesn't in Frontend? But Frontend also doesn't use a makefile — it uses package.json + Vue CLI — so maybe Frontend and Backend are already different enough in this area that there wouldn't be much confusion.


Issue with priority of old items when ignoreFirstRun: true

When new items are added to the feed later:

they will have 0 toots,
so will be sent to Mastodon in priority,
so will now have 1 toot,
so will have the same priority as items from the initial feed, which have 1 fake toot
so will sometimes be tooted once again sooner that what would be preferable

Would be the solution to not add a fake toot if ignoreFirstRun: true, just set the lastTootTimestamp?

Fixed with #14


[Feature request] Option to filter by tags

Hi,
Will it be possible to add a 'tag layer' to filter out devices drawn by the plugin?
The idea is to be able to restrict the topology by site but also by tag so you can get a nice topology on very large sites.

Hi,
could you please elaborate the expected tag assignment and handling in some more details?
The ability to hide specific layers is already implemented in general.
You can use "undisplayed_device_role_slugs" plugin parameter to make listed device roles hidden on the initial site topology:
PLUGINS_CONFIG = {
    "nextbox_ui_plugin": {
        "undisplayed_device_role_slugs": (
            "edge-switch",
            "border-router",
        )
    }
}

In the example above, any devices with 'edge-switch' or 'border-router' role assigned will be initially hidden.
Such device roles will be unchecked in the 'Select Layers' menu on the topology view.
You can use this menu to dynamically control the visibility of the layers:

How do you suggest to improve or extend this logic?

Hi,
could you please elaborate the expected tag assignment and handling in some more details?
The ability to hide specific layers is already implemented in general.
You can use "undisplayed_device_role_slugs" plugin parameter to make listed device roles hidden on the initial site topology:
PLUGINS_CONFIG = {
    "nextbox_ui_plugin": {
        "undisplayed_device_role_slugs": (
            "edge-switch",
            "border-router",
        )
    }
}

In the example above, any devices with 'edge-switch' or 'border-router' role assigned will be initially hidden.
Such device roles will be unchecked in the 'Select Layers' menu on the topology view.
You can use this menu to dynamically control the visibility of the layers:

How do you suggest to improve or extend this logic?

@iDebugAll, I could suggest that it would be great if we could make such dynamic filtering based on ... Tags for example. Because we have a big topology with switches with the same role, but I would like to see only those switches, which refer to particular Dev environment or lab. Suppose, we have 100 switches in one site and 5 environments with 20 devices in each environment. It would be great if we had a chance to see only devices from one environment.

@iDebugAll additionally, is it possible to increase topology window to "full view"?)

@Vadims06 explained it better than I did but that's the idea. If you want to only draw let's say a particular tag that belongs to a particular customer or environment. It would be awesome to be able to that from the web ui dynamically.

@Vadims06 @jpobeda thank you for the clarification. Such visibility granularity sounds reasonable and aligned with current plugin design.
I have just made a first approach to an implementation. In my lab, it looks as follows:

Some tag filtering should still be added as not all the tags conform this idea by design. I'm thinking of an approach like that:
PLUGINS_CONFIG = {
    "nextbox_ui_plugin": {
        "undisplayed_device_tags": (
            "tag_to_hide_some_devices_initially",
            "another_tag_to_hide_some_devices_initially",
        ),
        "select_layers_list_include_device_tags": (
            # include only tags containing listed words to a 'Select Layers' list
            "lab",
            "group",
         ),
        "select_layers_list_exclude_device_tags": (
            # filter out tags containing listed words from a 'Select Layers' list
            "foo",
            "bar",
         ),
    }
}

This should cover most of the cases.
Could you provide some insight on how you use tags in your environment? It could be helpful.

Hi @iDebugAll ,
It looks promising. Thanks for taking the time to look into it.
The main reason to be using tags is to be able to create filters easily from retrieving one field (aka tags). My use case to request this feature is that we host our own infra but also customer's infrastructure whether it's in our datacenter or an external one.
So, let's say I go to Sites and pick one of this DC and click on the topology icon. It will currently draw a massive topology whereas if I could also say, for this site, just this and this tag (dynamically) it'll narrow down the drawing to what I want.
For example a customer having an interconnect through your gear, If only select the customer tag I would only get the customer gear and would be missing the interconnect through my company's gear.
The only down side I see on your approach is that every time I create a new Tenant and customer tag I'll have to manually edit configuration.py to add them. I haven't proposed to use Tenant/Tenant Group because I think people might be using them in different ways as well. In my case, I have a match between two.
Does that make sense? I'm open to ideas :D
Can any of this be configured through the admin portal?

Hi @jpobeda

The only down side I see on your approach is that every time I create a new Tenant and customer tag I'll have to manually edit configuration.py to add them.

I made all tag visibility control parameters regexp-based. So you can define just a few base rules if you have a predictable naming convention for your tags. With regular expression syntax, you can do this as specific as you need.
The plugin preforms a re.search based on defined parameter values. This is effectively an any position match of given substring within a tag string. For instance, 'cust' would match 'cust_0001', '0001_cust', and any other tag values containing 'cust' on any position. '^cust_0001$' would match an exact 'cust_0001' tag value and so on.

I have just published a new v0.6.0 containing this feature implementation. It is available on PyPi.
Feel free to check this out. I'll appreciate your feedback and further improvement suggestions.
Also some comments on your side questions:

Can any of this be configured through the admin portal?

@jpobeda The quick answer is no. The plugin on its current development stage does not write anything to the database.
Implementing per user setting and persistent views will likely require this. So I will consider implementing this in a future releases.

is it possible to increase topology window to "full view"?)

@Vadims06 There are some NeXt UI limitations in canvas size adaptiveness. I'm looking for a workaround.

@iDebugAll , great, thanks! I'll see if I can check it out during the day in test env and get back to you :D

Looks great! Thanks!


Adding comfort "X" within Date Quickfilter

Hi all,
in the lookup dropdown quickfilters we have an "X" to erase the current filter. In the date quickfilter this "X" is missing.

In order to provide a consistent user experience I would like to add such functionality to the date quickfilter.
Did any of you already add the "X" functionality to the date quickfilter?
If yes - may I ask for some sample code?
Thanks and
with kind regards,
John

hm. Nice suggestion.

I'd like to see this implemented natively also, when I have a change perhaps I'll have a look at it.

Closing due to inactivity.

Hi @brunobola , @dfaruque ,
took me a while but thanks to an excellent stackoverflow article, here it is (done as a Wiki article and matching for SF 2.9.24 but should also work with newer SF versions):
https://github.com/volkanceylan/Serenity/wiki/UI:-Add-X-to-any-text-field-based-quickfilter-to-clear-content
Hope this helps.
Hint: If you don't like the SF-stock "X" image, just exchange it with something more adapted to your taste :-)
With kind regards,
John


Building devtools part of sdk requires administrative rights on Windows

Building the sdk on Windows fails with
<EMAIL_ADDRESS>../../tools/copy_tree.py --from C:/src/dart-repo2/sdk/third_party/devtools/web --to C:/src/dart-repo2/sdk/out/ReleaseX64/devtools
Traceback (most recent call last):
  File "../../tools/copy_tree.py", line 169, in <module>
    sys.exit(Main(sys.argv))
  File "../../tools/copy_tree.py", line 160, in Main
    CopyTree(args.copy_from, args.to)
  File "../../tools/copy_tree.py", line 107, in CopyTree
    raise RuntimeError(msg)
RuntimeError: Some file copies failed:
==============================================================================
From: C:/src/dart-repo2/sdk/third_party/devtools/web\canvaskit\canvaskit.js
To:   C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\canvaskit\canvaskit.js
[Errno 13] Permission denied: 'C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\\canvaskit\\canvaskit.js'

From: C:/src/dart-repo2/sdk/third_party/devtools/web\canvaskit\canvaskit.wasm
To:   C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\canvaskit\canvaskit.wasm
[Errno 13] Permission denied: 'C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\\canvaskit\\canvaskit.wasm'

From: C:/src/dart-repo2/sdk/third_party/devtools/web\canvaskit\profiling\canvaskit.js
To:   C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\canvaskit\profiling\canvaskit.js
[Errno 13] Permission denied: 'C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\\canvaskit\\profiling\\canvaskit.js'

From: C:/src/dart-repo2/sdk/third_party/devtools/web\canvaskit\profiling\canvaskit.wasm
To:   C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\canvaskit\profiling\canvaskit.wasm
[Errno 13] Permission denied: 'C:/src/dart-repo2/sdk/out/ReleaseX64/devtools\\canvaskit\\profiling\\canvaskit.wasm'
[1750/1948] CXX obj/runtime/vm/libdart_vm_precompiler_product.object.obj
ninja: build stopped: subcommand failed.
BUILD FAILED

I (usually) fix this by rebuilding the sdk from scratch in a command prompt run as administrator.

I suspect that the cipd package for devtools needs to be created with -preserve-writable.

Reproduces on macOS as well.

This should be a one time deal as the canvaskit binaries included with DevTools weren't uploaded to CIPD (note: not the DevTools upload itself) without -preserve-writable. This issue has been resolved (https://github.com/dart-lang/sdk/issues/48010) and the new copies of the canvaskit binaries should have the right permissions going forward.
The fix right now is to just blow away your build directory and rebuild from scratch. If you see it again going forward, then there's something else that needs to be looked at.


Exporting RMS protected messages is no longer supported

This documentation states that exporting RMS protected messages is supported and messages will be decrypted as a part of the export process, however it appears that is not the case.
I was unable to export RMS protected (Encrypted) messages, support stated that this is not supported.
RMS protected messages are not discoverable in eDiscovery, therefore they can't be exported.
Reference Office 365 support case #28805669

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: e38718be-6244-3988-7851-7c8c5625dd9f
Version Independent ID: 4581a9e4-b838-c1a9-93a8-d52630128195
Content: Decryption in eDiscovery - Microsoft 365 Compliance
Content Source: microsoft-365/compliance/ediscovery-decryption.md
Service: o365-seccomp
GitHub Login: @markjjo
Microsoft Alias: markjjo

@msbemba

@mikenri Thank you for your feedback. I'm currently testing and will work with the author to check if things have changed.
Thanks
Sri

@mikenri Is your issue related to AIP Client encrypted documents on a local computer that were then uploaded to SharePoint Online or OneDrive? (I am unable to access the support case that you referenced). If so, then yes, engineering confirmed AIP Client encrypted docs are not supported for eDiscovery decryption.  Only docs encrypted by the SPO/OD service (via sensitivity labels) are supported. We are working on updating the documentation with this info. Adding @msbemba for visibility.

The situation was my organization acquired another organization that was already an Office 365 customer.
The acquired organization had encrypted some E-mail using Office 365 Message Encryption.
We migrated all the non-encrypted mail to new mailboxes in our tenant.
Our goal was to export a decrypted copy of the encrypted E-mail messages for future reference if needed.
My understanding is that Office 365 Message Encryption is built on RMS.
This documentation seems to indicate you should be able to export them:  https://docs.microsoft.com/en-us/microsoft-365/compliance/ediscovery-decryption?view=o365-worldwide#decrypting-rms-protected-email-messages-and-encrypted-file-attachments-using-content-search-or-core-ediscovery
But Office 365 support indicated it's not possible to export encrypted E-mail messages.

@mikenri Thanks for response and sending the search query you're using. The documentation does state that OME encrypted items aren't supported. Not sure if that is relevant to your case or not. Curious if the export includes an Errors.csv or UnindexedItems.csv report provides any info about docs not exported? Also, is there a link to your support case that you can send me? That would be helpful when I follow up with engineering in terms of whether or not or how to update the documentation based on your scenario. Thanks.

@markjjo
The documentation states that OME encrypted emails with custom branding aren't supported.
But in this case, custom branding was not applied.
The export doesn't include an errors.csv or unindexeditems.csv
All it has is an Export Summary CSV and a trace.txt file.
Link to support case:
https://admin.microsoft.com/#/support/request?requestId=5ea6746c-4463-442c-83a0-fbd7aed47f3d

Thanks @mikenri. Will look into this and follow up on this github issue.

@markjjo Kindly update. Thanks

Forwarding this one to Samson Chan.

@samschan-ms - The ediscovery decryption content states that "Any rights-protected (RMS-protected) email messages included in the results of a Content search will be decrypted when you export them. Additionally, any file that's encrypted with a Microsoft encryption technology and is attached to an email message that's included in the search results will be decrypted when it's exported." The documentation identifies this as default behavior. This is in direct contradiction to the statement here that indicates that OME encrypted mail is not supported by eDiscovery because it isn't unencrypted during export. Let's work this out.

My experience was that I had an administrator account in Tenant A but any encrypted messages were not present in an eDiscovery export.

@ninacchen can you comment on whether current behavior or documentation is correct, for exporting encrypted mail?

Export should decrypt content if the user has RMS decrypt role, did we confirm the encrypted item is in the result of the search first?

@samschan-ms Please reply and resolve. Thanks

@ninacchen - It sounds like tenant A has a bunch of encrypted mail and when the admin tries to export, it returns no result.  According to you, if the admin has export rights, then it should decrypt the mail.  I have also stated that if you replicated the mail from tenant A mailbox into tenant B mailbox, then eDiscvoery export would not work because the encryption originate from tenant A and tenant B would not be able to decrypt the mail.
@airmnichols  were you trying to export the email from the old tenant, or the new tenant?


ipykernel not detected ('Running cells with 3.9.13 (base) requires ipykernel package installed or requires an update')

VS Code Version: 1.73.1 (Edit: I am using VS version 1.73.1)
OS Version: 64-bit operating system, x64-based processor

I am using a company laptop/machine where vs 1.0.0 and python 3.9.13 is installed and I do not have any access for updating or changing the directlies of where these are installed. I also downlaoded conda 22..9.0 that I installed on my machine. But everytime I try to run something I get an error message saying that I need ipykernel package, however I do have it, I tried updating it, also tried uninstalling and reinstalling it.
I also followed the suggestions on the following links but non of them worked:

https://statics.teams.cdn.office.net/evergreen-assets/safelinks/1/atp-safelinks.html
https://github.com/microsoft/vscode-jupyter/issues/491
https://github.com/microsoft/vscode-jupyter/issues/2426

I am sorry, I put the incorrect version when I created the issue. I am actually using VS 1.73.1.


Powershell in VS Code's terminal has vertical artifact

VS Code Version: 1.55.2
OS Version: Win10 20H2 build 19042.928. Mac Mini M1 Big Sur 11.2

Steps to Reproduce:
How it looks in VS Code:

How it looks in Windows Terminal:

Both are using Cascadia Code Mono PL. I'm seeing the same vertical artifact in VS Code in Mac with default font.

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

Does changing terminal.integrated.gpuAcceleration fix this?

Not sure where's the terminal.integrated.gpuAcceleration is, when I tried adding it to settings.json it said that's an unknown configuration setting.
Anyway, I've tried:
"disable-hardware-acceleration": true in argv.json, does not work
Start code by code . --disable-gpu, does not work either

This is fixed in the upcoming stable release
/duplicate https://github.com/microsoft/vscode/issues/120129


prism (config editor highlighting) should be moved to this repository

Reasons are already outlined in #1162.
https://github.com/srliao/prism

From quick research, I don't think it's possible to use Prism.js / highlight.js with a custom language definition without forking the repository. Since we want to keep the forked repository up-to-date while keeping it inside of the gcsim repository, we can only include it via git subtree, but this would clutter our commit history with commits from the Prism.js / highlight.js folks. I think the best move going forward is to either implement the highlighting ourselves or choose a different package that allows for defining custom languages for highlighting without having to fork it.

Short term, best is to just fork the repository since we do not currently keep it up to date anyway.
Long term, I agree we need to find a different highlighting package that is better designed for custom languages

fixed in #2060 by removing the prismjs fork dependency entirely


Bullcoin website and explorer not accesible.

Is it safe to send BLC from my wallet?

send to where, man?

Blc explorer website is not accessible, is it safe to send blc to pc wallet from ccex?

no problem bro


Revert #160: "Switch Travis config to use "beta" trusty Ubuntu for builds.

This reverts commit 284a503820f1843c1365e465502a4e6f57dd4fb2.

Coverage remained the same at 87.805% when pulling 7e49aad243b318ff036fd44850bd3a2542fa2f30 on revert-travis-config into 9f400170ee1deec7cbc7bdf3d5a7a378f6b74596 on master.


Deploy to netlify

Updated the README.md file to fix issue #62 "documentation on how to deploy to netlify".

Please remove or rephrase the line Considering the fact that they are a large web hosting server as compared to vercel.
We don't want to mention which provider is larger.
Consider removing the bash prefix

Everything else looks good.

Changes made. Please view and update.

I can't seem to find this section in the project. Please can you point me to the right place where you saw it ?

Please check the attached image

Hello can you check again?

Hi @infiniteltd
Remove the netlify.toml file altogether.


Editor doesn't honour state values 'valid' or 'invalid' (reopen)

Looks like the previous fix (478) didn't work. The Editor still won't show red or green border/icon if we set state to 'valid' or 'invalid'.

@yan5 did you updated package to latest version? state works as expected on Editor and FormEditor components.
you can see here: https://svelte.dev/repl/85abfa76220d46c0ba4aa63afeb6577f?version=3.55.1

@yan5 ,
Yes my bad, I didn't update the css files.


Update pom.xml

Seems like the pom.xml is outdated. It has guice that's not really used and cassandra-all which is at 0.8.9 which is pretty old.

+1 for this.
We also experiencing build breaks because of transitive dependencies on Guava.

I will fix the guava version, but the cass-all is tied to what we are running in production.  We are working on an upgrade to 1.x, but in the mean time if you need a new version you will have to build it yourself.

Why do I need to build it? Can't I just use it with the latest Cassandra jars?

I suppose that you don't have to, but if you wanted to have it in a local repo with correct pom file, or if you wanted to run the tests with the new cass jar, you would probably want to do a build.

Make sense. Thanks.

I'm interested in contributing a patch that provides Cassandra 1.X support for Astyanax, but it'd be nice to have the unit tests available to make sure that I'm not breaking anything.
Do you guys have an ETA on when you can make the unit tests available?

I'm not exactly certain what you are asking for.  There are unit tests under src/test/..., did you mean something else?

I was referencing the FAQ item about unit tests not having been included yet:
https://github.com/Netflix/astyanax/wiki/FAQ
I suppose that's outdated, though - thanks for the pointer!

Guava and the wiki have been upgraded.