Evaluate Local State Implementation

Nice work with urql's extensibility and small core!
I'm interested in evaluating and potentially maintaining a local state implementation.  The only discussion looks like #323.  Any other thought on it so far?

The only reason why we haven’t gone for this is that we think there’s probably a limit to how many exchanges we can maintain ourselves 😅
So if you’re willing to give it a shot, please go for it! I’m always willing to help out and support you (Twitter DMs are open)
There’s probably a lot of different ways to approach this too. You could either go for adding directives that are handled by an exchange and stripped out when it passes on operations, or you can go for a centralised configuration and then selectively strip out stuff that is handled by local resolvers.

Fantastic.  Thanks for the insights Phil.
My inclination is to start simple with a convenience wrapper around the exchange and result creation.  Here's some pseudocode for an exchange and usage.  See any reasons the concept wouldn't work for an initial effort?
// factory
const makeLocalResolverExchange = resolverFn =>{
  return ({ forward }) => {
    return operation$ => {
      const resolver = resolverFn( ()=>forward(operation$) );
      return pipe(
         operations$,
         tryCatch(
           map( op=>makeOperationResult( resolver(op) ) )
           makeErrorResult
         )
       );
      }
    }
  };
};

// usage
const localResolverExchange = makeLocalResolverExchange(
  forwardOperation=>operation=>{
    return cond([
      [userPredicateA,syncResolverA],
      [userPredicateB,syncResolverB],
      [userPredicateC,asyncResolverC],
      [stubTrue,forwardOperation]
    ])(operation)
  )
);

notes:

assumes exchanges: [dedupe,cache,localResolvers,fetch]
can return synchronous or asynchronous results
ignores requestPolicy since caches handle it
Tradoffs: At the cost of making the user responsible to parse the query/mutation/subscription request and return a valid graphql response shape, user gets flexibility, no need for custom directives, and easy to add/remove some/all resolvers for mocking and local state.  Maintainers get little to maintain.
Would need docs on query/mutation/subscription parsing.  Happy to write those.  Some helper functions might be handy.  TBD on that.
Docs should also mention that separate cache and localResolver exchanges means a "cache-only" requestPolicy will not call local resolvers.  An all-local-data setup would involve a "cache-first" policy plus local resolvers that handle all requests.

Reflecting, it might help to clarify the problem a bit.  "Local State" is too general a name given that all exchanges handle data state in some way.  The problem this issue addresses is more how to implement a local version of a server.  Some initial requirements for that:

provides data in user-specified conditions
allows forward to exchanges that handle other requests (eg fetching).
allows custom operations
lightweight since it's on the client, so minimal dependencies
reads and writes user-specified data
returns expected data shape
returns server-like errors
doesn't handle caching by itself
supports queries, mutations, subscriptions

On a related note, the graphcache exchange appears to have resolvers.  I'm curious about their intent, especially since the default cache lacks them.  Resolvers on a cache seem likely to mix the concerns of caching with creating/updating/removing/transforming/deriving.  The way I see this exchange would be handling those concerns while providing responses that both the default cache and graph cache could digest effectively.

In theory, the graphcache could handle local state if it was aware of @local directives and recognized them but yes, wasn't our original intent there.

Thanks for the clarification Jovi.  Reading through all the graphcache docs now.

Quick update.  I'm assembling a spreadsheet with all the exchange responsibilities by requestPolicy and operation type to get a sense of what cases the local (state|data|something) exchange should handle.  https://docs.google.com/spreadsheets/d/14tsuPWvVvoG-zKzx9zvDbBFEP61X2t4mevRTZJRplwQ/edit#gid=0
Getting through it is going to take some time (though it's a great way to get familiar with the ecosystem).

You can probably make this work for both caches in the following way:

you put an exchange in front of cache
it analyses incoming query/mutation
takes the local directives
executes by getting data and so on
forwards to cache without local refs
when operation is returning from the end attach relevant data

Thanks for thinking through that approach Jovi.  I don't have time this evening to chew on it and respond, but should sometime in the next few days.
My own thoughts aside, one question has me curious.  As Phil mentioned earlier in the thread "You could either go for adding directives (me: like @local) that are handled by an exchange and stripped out when it passes on operations, or you can go for a centralised configuration and then selectively strip out stuff that is handled by local resolvers".  If I understand the graph cache correctly, it already does the second option.  In addition to per per-object caching, it does transformations, updates, selections of subsets, and merging partial responses.  It seems like it's only missing an "initial state" property, and enabling to resolvers to intercept mutations, to function as local state manager.  Why not go that route?

Re @local directives, I'm opposed to architectures using them for a few reasons. They:

potentially impact other exchanges
require additional code to strip out
create a sequential exchange order dependency that can break unexpectedly
require additional error handling for cases like that
require resolvers to work
require a change in two places to handle one query (resolver + query)
fail silently if the resolver exchange is missing (assuming it doesn't make the other exchanges produce errors)
require users to learn another concept
require users to learn  additional syntax
create two places to check when debugging
require resolver documentation
require directive documentation
decrease query/mutation reusability

To contrast, an exchange of resolvers that intercept requests:

require resolvers to work
require resolver documentation

I don't believe directives' benefits outweigh their cons.  However, I'm open to changing my mind on that.

Here's where my thinking is at currently:
Terminology: Fetch, dedupe, debug - these are verbs.  "Local State" is adjective+noun.  The distinction is important because nouns don't "do" anything.  It's easy to lump a bunch of functionality into code based on them, so I wanted a verb.
The essence of local state is mapping requests/responses to/from a state object(s), and transitioning (often reducing) that object from one state to another.  As such, I created two tiny composable exchanges, map and reduce.  Users can compose them in multiple pipeline locations depending on their needs.  For example:
client({
  exchanges: [
    mapExchange({ ...}), // stateless sync non-cached: arbitrary transforms/selections/filters/derivations
    reduceExchange({ ...}), // stateful sync non-cached: arbitrary transforms/selections/filters/derivations
    cacheExchange,
    mapExchange({ ...}), // stateless sync cached: arbitrary transforms/selections/filters/derivations
    reduceExchange({ ...}), // stateful sync cached: arbitrary transforms/selections/filters/derivations
    graphCacheExchange, // intelligently cache gql-valid data
    mapExchange({ ...}), // stateless async cached: gql-valid transforms
    reduceExchange({ ...}), // stateful async cached: gql-valid transforms
    fetchExchange,
  ]
})

In that example, "local state" occurs in three reduce and two cache exchanges, each with its own purpose.  That approach composes flexibly with urql's other exchanges, and provides users with a couple of small exchanges they can extend to build more customized solutions (e.g., the reduce exchange is built using the map exchange).
Initial concept code for map and reduce is up on my fork for review.  I pushed  (pushed with --no-verify due to a pre-commit hook syntax issue I couldn't quickly resolve).  That issue, my infrequent typescript use, and this being my first exchange, add up to the code likely having some problems.
Once we get to an architecture we all like, I'll add tests and docs.  "Local State" would be one example use case in the reduce docs.
Thoughts on that approach?

I’m opposed to directives as well, when there’s good alternatives, since they need the definition of data requirements, ie the query, to know what’s local data.
However, I don’t think the assessment here is quite right for what local state implies, sorry 😅

require additional code to strip out [fields that are for local state]

This is required either way, as we need to strip parts of a query that are for a local schema or state and not the API / remote schema
I have taken a look at your map and reduce exchanges, but I think they’re unfortunately too small to be published as part of the core. I personally don’t see exchanges as a DSL so introducing another abstraction on top of Wonka streams (which are basically Rx-inspired) would add much value as these exchanges are very small.
Basically stateless exchanges are just utilities that don’t have to live in core as they’re very reproducible and just a group of a couple of Wonka operators on top of our convention. IMHO that would add more of a burden to users as there’d be more docs and more concepts that look like conventions they have to adhere to.
A local state exchange is also inherently stateful as far as I can tell 🤔
I think the way to go here is a full resolver/schema exchange for local state that allows CRUD getters/setters to be defined and strips out fields that it handles before passing these stripped queries on to the fetchExchange / cacheExchange

However, I don’t think the assessment here is quite right for what local state implies, sorry

No need to apologise for critiquing ideas.  I hold them loosely.  No worries. :)

require additional code to strip out [fields that are for local state]

I don't think we disagree here.  That line referred to directive-stripping code.  Stripping the client-only fields needs to happen both with and without directives, so it isn't mentioned in that list.

I have taken a look at your map and reduce exchanges, but I think they’re unfortunately too small to be published as part of the core. I personally don’t see exchanges as a DSL so introducing another abstraction on top of Wonka streams (which are basically Rx-inspired) would add much value as these exchanges are very small.

Fair assessment.  They add minimal value by themselves.  Both are noop exchanges without wonka operators.  I thought they may be useful for others getting started with exchanges.  It's good to know that you don't want exchanges that tiny in core.

Basically stateless exchanges are just utilities that don’t have to live in core as they’re very reproducible and just a group of a couple of Wonka operators on top of our convention. IMHO that would add more of a burden to users as there’d be more docs and more concepts that look like conventions they have to adhere to.

Agreed on "don't have to live in core".  I also think that the "very reproducible" part depends on exchange implementation experience.  Speaking as a complete Urql noob trying to write an exchange, I was confused for a while about "simple" things like where request/response happened.  [1]

A local state exchange is also inherently stateful as far as I can tell 🤔

Agreed. And the reduce exchange is stateful. I didn't articulate well that it's also away for me to make sure I have the basic exchange writing parts down before tackling more complex parts. As is, it's like a minimal, bidirectional version of Redux.  It passes state+operation to request and response reducers, and returns the next state+operation.  Combined with wonka operators, it enables any combination of intercepting/merging/creating/filtering requests, responses, and state.  It's a step toward an actual local state implementation.

I think the way to go here is a full resolver/schema exchange for local state that allows CRUD getters/setters to be defined and strips out fields that it handles before passing these stripped queries on to the fetchExchange / cacheExchange

I can do that.  The getter/setter CRUD approach also differs from what I personally want in a state manager.
How important is having a single local state approach?  One of Urql's biggest strengths IMO is its small core and small composable exchanges.  What about two local state exchanges? One redux-esque implementation and one getter/setter implementation.  Both would strip relevant fields and forward the request.  Given the number of devs experienced with Redux, having both approaches available may also reduce potential barriers to Urql adoption.  Not sure if I'd implement both yet, but I'm happy to start with one and reevaluate afterward.

[1] Documentation footnote: Looking back at the exchange creation guide now (thanks for writing that!), I see why I missed where response handling happened.  It mentions "The ExchangeIO function is what each exchange returns. This is a function that receives the stream of operations and must return a stream of results." However, The noopExchange and other examples lack the word "ExchangeIO", as do all the existing exchanges' code I saw.  ExchangeIO seemed like a forgettable part of the docs since it was (seemingly) never used.
Given that it's quite important and always used anonymously, omitting the exchangeIO type name from the docs would be clearer than including it.  The map exchange, because of its simplicity and explicit request/response semantics, would also be a helpful addition as a "quick start for noobs".  Beyond that, as I mentioned in spectrum, an example that continues after the forward call would also be helpful to clarify how to think about response objects and other post-forward code.
Once I understand request/response handling accurately, I'd be open to updating that section of the guide from a noob's perspective. Let me know on that.

@kitten @JoviDeCroock  Thanks for exploring this with me guys.
My only graphql experience was using the Apollo client, usually with local state.  Frustrations with Apollo's config over composition approach led to exploring Urql.  After seeing the exchanges architecture and small core, I was hooked.  Enough to contribute a local state package.
In actually building that package there are many firsts, like parsing the AST, learning Urql's exchanges and operations, and determining how to modify operations for local state modifications.  While I may have opinions like directive vs directive+resolver approaches, they're based on thinking through the semantic and structural code dependency graphs, not on deep knowledge of graphql query structure (why I missed AST parsing in the original list).  As such, my opinions are likely to have holes specific to graphql and, being human, likely others from time to time. :)
So yes.  I'm very much a noob at this, very open to you pointing out my ill-informed or incorrect thoughts, and very grateful for your insights.  Appreciate you for helping me through this exchange-building process!

@kitten I may have incorrectly assumed your "getters/setters" statement implied an OO style.  If your definition includes more functional getters/setters (e.g., lodash's get/set functions), those are fantastic.
My ideal local state API composes those extensively, for example (exact names, functions, args, and structure likely to differ):
localStateExchange(
  reduceRequest: schemaLens({
    query:{
      todos:flow( omitFields('x','y'), omitVariables('z') )
    },
    mutation:{
      setTodoXYZ: flow( setState({'x':1}), setVariablesToState('y','z'), preventForward )
    }
  })
)

The point of this issue is to evaluate what's involved in a local state implementation.  Enumerating specific cases like a good way to wrap it up.  Please let me know if I'm missing any.
If these cases are sufficient, and the above implementation is acceptable enough, we can close this and I'll get started on the tests+code.
Initialization

set initial local state
set request handlers matching schema shape
set response handlers matching schema shape

Request

all

map operation to handlers
forward operation where operation.query matches no handlers
(filter|omit|custom) operation.query properties
(get|set|filter|omit|merge|custom) local state properties
(get|set|filter|omit|merge|custom) operation[context|variables] properties
(get|set|filter|omit|merge|custom) local state properties to operation[context|variables] properties
(get|set|filter|omit|merge|custom) operation[context|variables] properties to local state properties
request forward (the default)
preventForward (like event.preventDefault())
generate blank data response (populated in response section)
emit blank data response (before forward | after forward | after preventForward)
conditionally do any of the above
enable async handlers for cases like [localState(sync), cache, localState(async), fetch]

query
mutation
subscription
teardown: tear down
custom: enable user-defined behaviors

Response

all

map operationResult to handlers
return operation where operation.query matches no handlers
(get|set|filter|omit|merge|custom) local state properties
(get|set|filter|omit|merge|custom) operationResult[data|context] properties
(get|set|filter|omit|merge|custom) local state properties to operationResult[data|context] properties
(get|set|filter|omit|merge|custom) operationResult[data|context] properties to local state properties
map response to [1-n] custom responses
preventResponse
conditionally do any of the above
enable async handlers for cases like [localState(sync), cache, localState(async), fetch]

query
mutation
subscription
teardown: tear down
custom: enable user-defined behaviors

I think I’ll close this for now since we’re not really willing (for now) to maintain more than 2-4 exchanges. It’s actually unlikely that this is going to end up in this repo anyway, but either way, it’d have to be a separate exchange :)
We’re happy to help anyone out though who decides to write one :)
@a-laughlin happy to review any code you’d like to start with! Sorry to close this with your write-up, but I think it’s actually unlikely to be picked up by us and unlikely to be picked up by someone else for the moment.
So if you personally don’t have any capacity I’ll make sure to link to this issue if it comes up again :)

Actively working on this.  Description edited to reflect additional learnings in the process, plus some constraints for bundle size and query resolution time.  Let me know if any issues.

@kitten Just saw your response.  Thanks for the update.  Issue open or closed are fine with me.
Will you still communicate here if questions come up?
Asking because I do have the capacity for it and it's already in progress.  Current code status is 20-50% done, depending on # of unknown unknowns remaining.  Should have something to post for review in the next few weeks.  Let me know if you'd like me to post it somewhere else.
Thanks for the graphcache reference.  Mid-process learnings from reading that, plus the apollo and apollo and graphql-js implementations have already been useful (and generated a few revisions!).

Yea! Happy to communicate here on anything that comes up, or do reach out to me on Twitter if you have very generic/specific questions that aren’t on topic per se. I’m also available on Spectrum (albeit not as promptly) but the alternative is always to just post a thread there that anyone could read 👍
Happy to hear that it’s progressing nicely! ♥

One question.  The graphql spec indicates resolvers should be able to return promises or values.  It makes sense for an urql exchange that they should also be able to return streams (i.e., Wonka Sources if my understanding is correct).  Writing predicates for values, promises and functions was straightforward.  Distinguishing a Wonka stream from a regular function is more troublesome.  I couldn't find an example of doing so in the other exchanges or the Wonka source.  How would you write an "isWonkaStream" predicate?

@a-laughlin as far as I can tell there isn’t an intended way to differentiate them. You could guarantee this via types and treat functions as always being streams.
That being said, I do not think there is a benefit to using streams there. You’re always returning a single value in those cases, and if you really have a stream you can pick a value off of it using toPromise 🤔

Yeah.  It's infrequent.  Only one stream-returning case comes to mind: local subscription.  Zero function returning cases come to mind, so your thought about

treat functions as always being streams

Should cover it. Thanks!

Update and Feedback Request:
An approach using the graphql-js functions looked likely to exceed my targets for bundle size and execution performance. Considering different approaches to solve the problem led to a solution with significant benefits in bundle size, execution speed, learnability, flexibility, and maintainability.  It also has some tradeoffs like a perspective shift and more initial tests.  To me they're worth it.  Curious what you think.
Key Concepts
The key perspective shift involves expanding the idea of state to see everything in the operation context as a data tree.  The includes a traditional "state" object, the data object, the operation itself, the query AST, the schema AST, variables, directives, the resolver map... everything.
If everything is a data tree, then every possible state change, from CRUD operations to collection synchronization and omitting fields, are expressible with the same form:
readSubtrees -> transform -> writeSubtrees
Composable lenses can then abstract the tree shape while encapsulating their respective concerns.  As a result, resolvers can use the existing query/mutation api and an identical pipe format for all operations:
pipe({}, ...readLenses, transform, ...writeLenses)
The pipe passes a plain object in, readLenses add their respective subtrees' data, transforms  modify desired parts, and writeLenses write the output back to their subtrees.  Transforms just operate on single level collections or objects, so nothing new there.  They can be user defined or come from libraries like lodash.
The last piece is specific to the IO aspect of ExchangeIO.  Resolvers come in pairs.  Here's an example tying everything together:
exchangeFactory({
  data, // imported lenses
  state,
  fields,
  resolverMap:resolverMapLensFactory({
    query:{
      todos:{
        /*  readLenses ->   transform ->                                  writeLenses */
        I:['fields',        omit('local_id'),                              'fields'    ],
        O:['data,state',    flow( addLocalIdTo('data'), unionBy('id')),    'data,state']
      }
    }
  }),
})

Let me know if that concept explanation is unclear.  Happy to expand and/or clarify.
Benefits

Load performance: est. < 2KB minified+gzipped for > 98% of use cases.  The core + helpers are currently <300loc.  No external dependencies aside from the wonka peer dependency.  Lenses are separate importable packages, so excluding unneeded lenses (e.g. fields, context, info, type validation) provides granular control over bundle size down to the resolver level.
Execution perfomance:  est. < 3ms query/mutation resolution for local-only data.  Likely better.
Lens exclusion also directly improves execution speed.
Learnability:  Assuming prior understanding of trees, queries/mutations, and the exchange pipeline, there's almost nothing to learn with this this approach.  The existing query/mutation api plus resolver pairs are sufficient for all operations.  Transforms leverage existing user knowledge.  Learning lenses for most cases is equivalent to learning "the data lens reads and writes the data property".
Flexibility: Lenses can import and compose other lenses.  Resolvers' transform functions may return values, promises, or streams.  Lenses and transforms take the same single plain object argument, making all non-core functionality composable.
Maintainability:  The core is also a pipe of 5 single-responsibility functions totaling < 100loc. There is no conditional logic in the core or lenses, one argument per function, and no functions longer than 30 lines.  New features are new lenses, not core changes, so maintenance on existing code should be quite low once lenses for main use cases are written.

Tradeoffs

Seeing everything as a tree requires a mindset shift.
It's possible that lenses can't handle some case, but I haven't been to think of one yet, especially since they all take the same argument, and can import and compose others lenses' behaviors.
Resolver pairs differ from other resolver implementations.  I personally find them more intuitive to work with for bidirectional operations, but others may not.  Swapping that syntax involves swapping a 10 function in the core pipe.
Some folks will likely have a negative reaction to the string syntax for lenses.  I specifically made them that way because they represent paths in the tree, they intentionally lack an api, and memoization is simpler and faster with strings.  If folks really care, swapping out that core function is easy too.
Traditional resolvers will need an adapter to work.  Like queries, the exchange provides lens data declared in the resolver.  Context, info, and variables aren't imported by default.  An adapter to import those and spread them to the (parent, variables, context, info) format is trivial, so there's an option to use existing resolvers.  Bidirectional operations will still need a pair.
The biggest tradeoff for me is that enabling resolvers to work on the expanded definition of state means implementing a decent chunk of the spec from scratch.  That's surprisingly not too bad with type validation and nullability as separate composable concerns.  They may even be unnecessary, or addable later, if other exchanges or server implementations also do that.  Either way the inability to to rely on graphql-js means more tests up front.  Still, this architecture's benefits outweigh that cost for me.

Work and family take priority for the next few weeks.  Otherwise continuing forward with this architecture.  Will post a repo once core lenses and tests are in place.
Hope you all have fantastic holidays!

@a-laughlin Were you able to make any progress?

Hi Anil,
It's still in progress, though at a slow pace due to higher priority work issues.  The biggest challenge thus far was getting typescript to work with its higher order functions.  Not sure a  typescript version will ultimately be worth the effort.  My plan at this point is to re-look at it next week and decide whether to keep pursuing the TS version or get it done in JS.


Updated privacy whitepaper article

Docs Build status updates of commit f7b6328:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-PullRequestMergeConflict] Cannot sync git repo to specified state. Please make sure the pull request is mergeable.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit a022ccb:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-PullRequestMergeConflict] Cannot sync git repo to specified state. Please make sure the pull request is mergeable.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 7ac10e2:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/privacy-whitepaper/index.md
:bulb:Suggestion
View
Details

microsoft-edge/privacy-whitepaper/index.md

Line 464, Column 1: [Suggestion-duplicate-headings] Duplicate heading: 'H2 'Kids Mode''. Each second level heading (H2) in an article must be unique.
Line 481, Column 1: [Suggestion-duplicate-headings] Duplicate heading: 'H2 'Kids Mode''. Each second level heading (H2) in an article must be unique.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 275bca8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/privacy-whitepaper/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 7d3fa13:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/privacy-whitepaper/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit f6a16c8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/privacy-whitepaper/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 59cd5b6:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error: PullRequestMergeConflict] Cannot sync git repo to specified state. Please make sure the pull request is mergeable.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


[FR]: Allow multiple paths in category definition

Is your feature request related to a problem? Please elaborate.
I use Radarr (with Hardlinks) and have multiple Root Folders within Radar, all passed to qbittorrent with the film tag:
/data/Films
/data/Bad Films
/data/Stand Up
/data/Documentaries

These then maps 1:1 to a Jellyfin Library so everything ends up in the right place simply by adding it to the right Radarr Root Folder.
I then have the film category pointing to /data/Films:
cat:
  film: "/data/Films"

Unfortunately this means that using the nohardlinks functionality of qbit_manage think I have noHL for anything not in /data/Films
Describe the solution you'd like
I would like the ability to set multiple directories for a category:
cat:
  film:
    - "/data/Films"
    - "/data/Bad Films"
    - "/data/Stand Up"
    - "/data/Documentaries"

Does your solution involve any of the following?

[ ] New config option
[ ] New command option

Describe alternatives you've considered
Not using nohardlinks:film:cleanup: true
Who will this benefit?
Anyone with multiple destination directories for the same category in qbittorrent
Additional Information
No response

I then have the film category pointing to /data/Films:

Downloading to your root folder is not supported by Radarr and causes weird behavior including dataloss.

I then have the film category pointing to /data/Films:

Downloading to your root folder is not supported by Radarr and causes weird behavior including dataloss.
Your qbit categories can never and should never be the same as your root folder. This also triggers a healthcheck in radarr as well.

To be clear, these are the Root Folders in Radarr, where Radarr moves the files to. Not the directory:root_dir in qbit_manage
For clarity:
qbit_manage/config.yml:
directory:
  cross_seed: /your/path/here/
  root_dir: /data/Uploads/Complete/torrents
  remote_dir: /data/Uploads/Complete/torrents
  recycle_bin: /data/Uploads/.RecycleBin
  torrents_dir: /data/Uploads/Complete/torrents
cat:
  film: /data/Films

radar Root Folders:
/data/Films
/data/Bad Films
/data/Stand Up
/data/Documentaries

So the feature request here is in qbit_manage config form is essentially:
directory:
  cross_seed: /your/path/here/
  root_dir: /data/Uploads/Complete/torrents
  remote_dir: /data/Uploads/Complete/torrents
  recycle_bin: /data/Uploads/.RecycleBin
  torrents_dir: /data/Uploads/Complete/torrents
cat:
  film:
    - /data/Films
    - /data/Bad Films
    - /data/Stand Up
    - /data/Documentaries

Cats in QBM are for the torrent category path.... not your root folders
It sounds like your setup doesn't actually facilitate hardlinks and your files are not hardlinked if QBM is marking your torrents as not hardlinked.

For the sake of clarity I'll un-obfuscate the directory structure. I can assure you everything is using hardlinks.
directory:
  cross_seed: /your/path/here/
  root_dir: /media/ftp/Uploads/Complete/torrents
  remote_dir: /media/ftp/Uploads/Complete/torrents
  recycle_bin: /media/ftp/Uploads/.RecycleBin
  torrents_dir: /media/ftp/Uploads/Complete/torrents
cat:
  film: /media/ftp/Films

The full chain of events for adding a Film:

Add film to Radarr using /media/ftp/Films/Film Name (YYYY) as the end directory
Radar searches my indexer
Radar adds torrent to my download client (qbittorrent)

The temp directory of /media/ftp/Uploads/Incomplete
Tags the torrent with the category film

Qbittorrent downloads the file
Qbittorrent completed the download and moves the file to /media/ftp/Uploads/Complete/torrents/Movie.Name.mkv
Radar creates a Hardlink to /media/ftp/Films/Film Name (YYYY)/Movie.Name.mkv and sets it as Downloaded/Complete in Radarr
qbit_manage (with nohardlinks:film:*) sees the hardlink so does not tag it as noHL
All is good

Now we do the same but with a Documentary:

Add film to Radarr using /media/ftp/Documentaries/Documentary Name (YYYY) as the end directory
Radar searches my indexer
Radar adds torrent to my download client (qbittorrent)

The temp directory of /media/ftp/Uploads/Incomplete
Tags the torrent with the category film (because radar can only set one category per download client)

Qbittorrent downloads the file
Qbittorrent completed the download and moves the file to /media/ftp/Uploads/Complete/torrents/Documentary.Name.mkv
Radar creates a Hardlink to /media/ftp/Documentaries/Documentary Name (YYYY)/Documentary.Name.mkv and sets it as Dowloaded/Complete in Radarr
qbit_manage (with nohardlinks:film:*) does not see the Hardlink (as it is in /media/ftp/Documentaries, not /media/ftp/Films)
qbit_manage tags the torrent in qbittorrent as noHL
All is not good

So the request here is to support multiple paths for a single category within qbit_manage.

again,
cat:
  film: /media/ftp/Films

this is wrong
why are you telling Qbit Manage that the path for all torrents in the film category are at /media/ftp/Films when qbit has no torrents at that category?

I see. Apologies I was confused thinking cat:film was pointing to the final destination of the downloaded film as moved/hardlinked by Radarr, not the final destination of the file in the torrent.
Setting this correctly fixes the perceived issue.
Thanks for your help @bakerboy448


Need to restart vs code to update

Nothing seems to update before restarting visual studio. Maybe add a update button for manually refreshing vue i18n ally ?

Can you have some steps to reproduce? Thanks

I got 3 files
|--en.ts -> import home
|----home.ts -> import component
|------component2.ts
After editing component2.ts, side bar tree doesnt update until I reboot vscode

Sometimes it does automatically update the progress, but most of the time it doesn't.
I can reproduce this anytime by added a new key through hovering and clicking the pencil button. It does add the translation to the .json file but it does not display the value in the i18n ally sidebar or hovering over the key in a .vue file.
Dutch locale available, English locale not found.

English locale key available in the English .json locale

Sidebar view (Current file) does not recognize the English translation either.

@Niekvdm @Starpuccino Thanks! Will fix this soon.

Sorry for all the delay. The fix is live on version 0.29.8. Please upgrade and see if it solves your issue. Thanks.

Thanks for the quick update! I will test it tomorrow when I'm back at work.

@antfu That did the trick, it's working as intended now. Thanks again!

emmm still have the problem...
added a new key in the .js file manually but it does not display the value in the i18n ally sidebar or hovering over the key in a .vue file.
↓My JS translation document structure↓

@Starpuccino oh, I didn't expect that use case. I will add nested folders support soon. Thanks for sharing.
BTW, may I have your vue-i18n-ally configs as a reference?

@antfu
Thanks soooo much!
"vue-i18n-ally.displayLanguage": "zh-CN",
"vue-i18n-ally.annotationMaxLength": 20,
"vue-i18n-ally.sourceLanguage": "zh-CN",
Is what I uploaded right?
i18n.zip

@Starpuccino Do you have  "vue-i18n-ally.localesPaths" or "vue-i18n-ally.matchRegex" in config? Your structure doesn't seem working by default.

@antfu No, other configs are default.
My structure works well, just sidebar and inline previews are not automatically updated

The lack of updating is caused by the module cache. I still can not found a way to bypass the esm cache. If anyone has knowledge in esm, I may need some help.
https://github.com/antfu/vue-i18n-ally/blob/03093c9b754438e11b2aa608c65c848d21968708/src/parsers/JavascriptParser.ts#L30
By adding mtime query, I managed to bypass the cache of the given file. But not luck for other files imported by this file.

UPDATE:
I have made a PR #243 for this. Please give it a try, looking forward to any feedback!


Concatenating to a variable that doesnt exist [yet]

On lines 140 to 143 of ipnlistener.php, you have
    $header  .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: ".strlen($encoded_data)."\r\n";

but the $header variable isnt defined anywhere else, it was causing my code to fail. I changed the first line and now I have
    $header  = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: ".strlen($encoded_data)."\r\n";

It works.

This has been fixed.


DOC-71 Upgrade Spring boot to fix Tomcat vulnerability

https://dsdmoj.atlassian.net/browse/DOC-71

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 92.44%. Comparing base (253b82f) to head (3b82eec).

Additional details and impacted files
@@             Coverage Diff              @@
##               main      #78      +/-   ##
============================================
- Coverage     93.34%   92.44%   -0.91%
- Complexity      248      249       +1
============================================
  Files            48       48
  Lines           962      926      -36
  Branches         63       63
============================================
- Hits            898      856      -42
- Misses           52       58       +6
  Partials         12       12

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[Templates] Create sample template for Newsletter Email

Description:

We need to create a few sample email templates using react-email so that people can easily pick and use those templates as per their needs. This ticket is for creating a sample email template for the Newsletter Email. People can use this template for sending successful newsletter emails to the receivers. We can use the most used layouts to build some sample templates which users can customize accordingly.

Reference:
You can watch this video to get complete info about the package and how to use it to build clean and responsive email layouts easily.
Outcome:

A sample email template for the Newsletter Email using react-email and TypeScript, under the samples/ folder.

Assign i to me ill like to work on it

Assigned @SabujGolui, all the best, do let me know if you need any help.
Also, make sure to drop a star on the repo to support the project and open-source🌟😇

Hi @SabujGolui, any update on the process?
If you're still working on it or need any help, feel free to ping here. Otherwise we can assign the issue to someone else.

Template is done working on the documentation...
Sorry for being late cause I'm having my mind sem exams going on, by this week I'll add a PR

@niloysikdar PR is added pls check it.


Remove unnecessary request

When drawing annotation, request to link_category should be sent only if selected category has taxonomy data attribute

Still reproduces. Requests for not-taxonomy categories are still sent.

Fixed


Tests failed: test_region_manifest_checkpoint*

What type of bug is this?
Unexpected error
What subsystems are affected?
Datanode
What happened?
The following tests failed:
     Summary [   6.870s] 1163/1431 tests run: 1161 passed, 2 failed, 5 skipped
        FAIL [   0.209s] storage manifest::region::tests::test_region_manifest_checkpoint_compress
        FAIL [   0.177s] storage manifest::region::tests::test_region_manifest_checkpoint_uncompress

When trying to release db. See full logs here: https://github.com/GreptimeTeam/greptimedb/actions/runs/5172675489/jobs/9317233410
What operating system did you use?
ubuntu
Relevant log output and stack trace
No response
How can we reproduce the bug?
Run tests in release action.

Looks like it's a race condition, the test sleeps for a while to wait GC task running, but it may not run as expected in time. It happens rarely, I think we can close this issue until it happens frequently.


Open Source:  Add CLAs for possible third-party contributions

 Issue by andybs
Thursday Feb 04, 2016 at 17:47 GMT
Originally opened as https://github.ibm.com/ibmswift/Phoenix/issues/93

We need to add the initial CLAs for possible third-party contributions for third-party pull requests

@triceam Hey Andy, we are assigning this to you. If you are not the right person, do you know who can help us move this forward?

Completed by: 60f3985638a4efd8786a910e776f694e7684470a


Info not updated onChangeState

It would be nice if info.category and info.label can be updated in the onChangeState function. They are set just once in the addWatchers function.

Hi, thanks for your feedback.
You should open your suggestions on the main repository, this is only for distribution on bower.
https://github.com/2fdevs/videogular

Ok, I'll do that. Thanks!


Fix long standing bottom margin bug

Fixes the long standing issue where a chat isn't completely scrolled to the bottom. Uses pseudo selectors to increase the padding of the last item so when we call scroll to bottom it actually takes into account that space.
@keybase/react-hackers

🎊 🎉 🎈 👏 👏


Fix pretty-format to respect displayName on forwardRef.

Amd1090T.pdf
Unlike React DevTools, Jest ignores a custom displayName set on forwardRef components. We should align serialization with DevTools, so change behavior.

Summary

Test plan

Seems to me like this is just #9422


Pip installation

To facilitate easy installation and cluster deployment we should add a setup.py file to enable installation via pip.

@mlange05 can this be closed ?

Yes


ISPN-10137 Make annotated classes, fields, and methods accessible to the annotation processor

The component annotation processor required changing some of the rules for annotated components:

Annotated classes, fields, and methods must be package-private
@Scope must be present on each class or interface with injection or lifecycle annotations
@MBean must be present on each class or interface with managed attributes or operations
@Scope and @MBean are inherited, but only from classes
If @SurvivesRestarts is present on a class/interface, all subclasses must have it
Anonymous classes are not supported

Partly because of the rule changes, #6948 is pretty big, so I've extracted (most of) the code changes required in this PR. Despite its size, it should be trivial to review.

@danberindei if CI is fine, I will merge

@karesti it's fine, the failures are unrelated

Merged


SD Card compatibility.

@0xFireWolf First of all, thank you for your contribution!
1.SD Card compatibility.
My card reader is RTS5227,I tested two SD cards, one SanDisk and one banq. In sinetek-rtsx.kext, both cards can be recognized normally.
However, in realtekcardreader.kext, only SanDisk cards can be recognized, and both cards have error messages in the log.

SanDisk：
RTSX: IOReturn RealtekSDXCSlot::tuningRxCommand(UInt8) Error: Failed to send the CMD19 and get the response. Error = 0xe00002bc.
rtsx-SanDisk.log
BANQ：
RTSX: IOReturn RealtekSDXCSlot::tuningRxCommand(UInt8) Error: Failed to send the CMD19 and get the response. Error = 0xe00002bc.
RTSX: IOReturn RealtekSDXCSlot::tuningRx() Error: Rx Phase Map cannot be zero.
rtsx-BANQ.log
2.Whether EMMC card can be supported.
I have an SD card using EMMC chip. It can work normally in windows and Linux. Using SDIO protocol, the read and write speed in win10 is about 40MB / s.
Because the driver is ported from Linux, you should be able to add support.

rtsx-EMMC.log

SanDisk：
RTSX: IOReturn RealtekSDXCSlot::tuningRxCommand(UInt8) Error: Failed to send the CMD19 and get the response. Error = 0xe00002bc.

Based on your kernel log, your SanDisk card was recognized properly.
You don't need to worry about those errors related to CMD19, as long as the tuning process can finish successfully.

BANQ：
RTSX: IOReturn RealtekSDXCSlot::tuningRxCommand(UInt8) Error: Failed to send the CMD19 and get the response. Error = 0xe00002bc.
RTSX: IOReturn RealtekSDXCSlot::tuningRx() Error: Rx Phase Map cannot be zero.

I was not able to download the second log rtsx-BANQ.log. Github returned back a 404 error.
However, the error message indicated that the tuning process has failed.
It might be related to that specific card. Could you please upload the kernel log again?
Also please try the BANQ card with the boot argument -iosd3v3 and see if the card can be initialized properly.
This boot argument will initialize all cards at 3.3V, so UHS-I cards will run in either the default or the high speed mode.
Note that Sinetek's driver does not support UHS-I modes.

Whether EMMC card can be supported.

Sorry, I am not interested in MMC/EMMC cards, so I won't allocate time for them.

SanDisk：
RTSX: IOReturn RealtekSDXCSlot::tuningRxCommand(UInt8) Error: Failed to send the CMD19 and get the response. Error = 0xe00002bc.

Based on your kernel log, your SanDisk card was recognized properly. You don't need to worry about those errors related to CMD19, as long as the tuning process can finish successfully.

BANQ：
RTSX: IOReturn RealtekSDXCSlot::tuningRxCommand(UInt8) Error: Failed to send the CMD19 and get the response. Error = 0xe00002bc.
RTSX: IOReturn RealtekSDXCSlot::tuningRx() Error: Rx Phase Map cannot be zero.

I was not able to download the second log rtsx-BANQ.log. Github returned back a 404 error. However, the error message indicated that the tuning process has failed. It might be related to that specific card. Could you please upload the kernel log again? Also please try the BANQ card with the boot argument -iosd3v3 and see if the card can be initialized properly. This boot argument will initialize all cards at 3.3V, so UHS-I cards will run in either the default or the high speed mode. Note that Sinetek's driver does not support UHS-I modes.

Whether EMMC card can be supported.

Sorry, I am not interested in MMC/EMMC cards, so I won't allocate time for them.

thank you！
-iosd3v3  valid.
Also: these logs may be useful to you.
rtsx-BANQ.log
rtsx-BANQ--iosd3v3.log

If you are still interested in testing the driver, please try the attached one with your BANQ card.
The new fallback mechanism allows the driver to try to initialize your card at a lower speed mode after it has failed to initialize that card at the ultra high speed mode. Please check whether your BANQ card can be recognized properly WITHOUT the -iosd3v3 boot argument and upload the kernel log as well as the IOReg dump for debugging purposes.
RealtekCardReader_0.9.7_43b5887_DEBUG.zip


Update README.md

Ok so we will begin our path into cryptocurrency and blockchain. We will create a new coin and/or token to be introduced on ETHEREUM and or other blockchains.
Possibly our own chain for "x" "coin". Looking into using AZURES systems for development and testing.

CPU issues, project on hold.
Waiting completion of https://amillionproducts.net
Https://amillionproducts.net/crypto


(plugin-form-builder) Fields added with formOverrides and formSubmissionOverrides are not acessible for email customization

Link to reproduction
No response
Payload Version
beta.71
Node Version
20 LTS
Next.js Version
15.0.0-canary.58
Describe the Bug
Hello. I'm not entirely sure if this is already possible in Payload v3 and the documentation just needs to be updated.
According to the documentation available, it does not seem possible to access form fields added with formOverrides and formSubmissionOverrides in the beforeEmail function. This would be helpful when customizing the content of an email with form/submission data.
Reproduction Steps
For example, if I want a form to have an upload field with a PDF document that should be sent in the email with every form submission, this does not seem possible because the beforeEmail function only allows access to the FormattedEmail fields and not the form or submission data.
Since sending attachments in emails seems pretty standard behaviour, that's why I'm not sure if there's already a solution for this issue.
I found that this was discussed here and it seems that this would fix this issue, but this is still open with no explanation/update: https://github.com/payloadcms/payload/pull/4038
Thanks for any help possible.
Adapters and Plugins
plugin-form-builder

Going to ship this for v3 in this branch, I'm not sure about main right now as I'll need to review that PR first: https://github.com/payloadcms/payload/pull/7626


Request supports x-www-form-urlencoded content type

Support for requests with content type 'x-www-form-urlencoded'

Thank you very much for the contribution.  If you will add a test for this I can get it merged.

Tests added


feature request: use shiftwidth and expandtab settings when invoking formatters

Neovim version (nvim -v)
0.10.0 commit 09a17f91d0d362c6e58bfdbe3ccdeacffb0b44b9
Operating system/version
Arch Linux
Add the debug logs

[X] I have set log_level = vim.log.levels.DEBUG and pasted the log contents below.

Log file
NA
Describe the bug
conform should use the shiftwidth and expandtab settings when invoking formatters
For example,
https://github.com/stevearc/conform.nvim/blob/cb87cab7a6baa6192bf13123c2a5af6fd059d62c/lua/conform/formatters/stylua.lua#L9
should use --indent-width and --indent-type with values using shiftwidth and expandtab respectively
Steps To Reproduce
NA
Expected Behavior
NA
Minimal example file
No response
Minimal init.lua
No response
Additional context
No response

There is some merit here but formatters' configuration should take precedence; can't assume everyone on the project uses nvim with correctly configured tab/space settings.

For many formatters, these options are set in a configuration file. If we tried to magically overwrite them in the args, we run the risk of conflicting with the actual source of truth. This would require a huge amount of effort (customizations for every formatter) for questionable benefit. Closing as out of scope. This is better left to a customization by the end user.

Such a config should be done formatter by formatter.
Example:
local function shiftwidth(buf) return vim.api.nvim_get_option_value('shiftwidth', { buf = buf }) end

require("conform").formatters.shfmt = function(bufnr)
  return {
    prepend_args = { "--indent", tostring(shiftwidth(bufnr)) },
  }
  end

This way one can read the current value of &shiftwidth (i.e. indent size) and pass such a "dynamic" value to the command line of the formatter program.


Use direction pin for motor commands

Use direction pin in addition to the analog reference signal in order to command the motor. This will allow a configuration that does not send a large reference value when the microcontroller is reset.

Does this also effectively halve the influence of noise?

Yes it should.

We should do this so it doesn't smash.


Term is messed up

Hi,
I'm testing this with docker and seems like term is messed up..
I'm getting \x1b[1;36mroot@626cbb603707:/postshell#\x1b[0m instead of [root@626cbb603707 postshell]# also interactive mode is almost unusable
any idea why this happens?

@rek7 oh man, it's been awhile... I was testing it on macOS with regular nc


Improve logging

There are probably a lot of verbose logs which do not need to be printed during normal scenarios. It'd be nice to clean this up so that users don't have to ignore a lot of logs that are mostly useful during development.
An option would be to introduce a 'verbose' flag to turn on the more verbose logs.
Some things to clean up:

During the creation of unix sockets, oftentimes a message will be printed complaining that the socket was not found before it was printed; the proxy should at least ignore errors caused by ENOENT
Clarify errors from disconnect: it'd be good to know whether the local or remote connection was closed first
Remove logs from new connections ("Got connection for A_PATH"); it's probably not very useful.

Another one: when unmounting FUSE doesn't work because it was already not mounted.

The proxy should take care to warn the user when running on GCE if there is no default service account to use.


ts(1): digest option is mandatory

not specifying the digest both on command line and in the config file
will lead to response generation aborting with
140617514493760:error:2F098088:time stamp routines:ts_CONF_lookup_fail:cannot find config variable:crypto/ts/ts_conf.c:106:tsr_test::signer_digest
Checklist

[x] documentation is added or updated

It kind of sounds like this option is somewhere between optional and mandatory! i.e. its optional on the command line if you've specified it in the config file and vice versa. So describing these options as mandatory doesn't quite sound right either.

well other options that need to be specified, but don't have to be specified in a specific place are also listed as (Mandatory) (like digests), or am I missing something?

Well, AFAICT, that man page only lists 3 options as mandatory at the moment:
-in: I don't think there is a config file equivalent of this - so this really is mandatory
serial: Seems to be config file only - so also really is mandatory
-digests: Also seems to be config file only?

hmm, true. Any suggestions?

I'd suggest marking it as "Optional" in the config file, and then mark the command line option as "Optional unless not specified in the configuration file" (or possibly the other way around "Mandatory unless specified in the configuration file").

@mattcaswell updated

"the" added in both places

Merged to master and 1.1.1
29716a03e8 ts(1): digest option is mandatory (master)
3d753b0cef ts(1): digest option is mandatory (1.1.1)


Update sk.coffee

translation community,classes I

@nwinter, could you merge?

Thanks @cundamic!


goreleaser: 0.155.2 -> 0.157.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/goreleaser/goreleaser/releases.
meta.description for goreleaser is: "Deliver Go binaries as fast and easily as possible"
meta.homepage for goreleaser is: "https://goreleaser.com"
meta.changelog for goreleaser is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 0.157.0 with grep in /nix/store/4s67nrdx9wngh9lf2lvwi08w7jzlqmfj-goreleaser-0.157.0

directory tree listing: https://gist.github.com/0167807ccaaf49055e4933e4157d309b

du listing: https://gist.github.com/318b146395acc6eda60e5da7e5ee353e

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
goreleaser

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/4s67nrdx9wngh9lf2lvwi08w7jzlqmfj-goreleaser-0.157.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A goreleaser https://github.com/r-ryantm/nixpkgs/archive/80f91ac210ce479dff4430e10eb0b9dc19936b31.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/4s67nrdx9wngh9lf2lvwi08w7jzlqmfj-goreleaser-0.157.0
ls -la /nix/store/4s67nrdx9wngh9lf2lvwi08w7jzlqmfj-goreleaser-0.157.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

goreleaser

Maintainer pings
cc @c0deaddict @endocrimes @sarcasticadmin @kalbasit for testing.

Result of nixpkgs-review pr 113837 at 80f91ac2 run on aarch64-linux 1

1 package built:

goreleaser

1 suggestion:

error: no-flags-array
buildFlagsArray is only intended to be used in Bash, not as a Nix attribute.
Near pkgs/tools/misc/goreleaser/default.nix:16:3:
   |
16 |   buildFlagsArray = [
   |   ^


Windows cmd and ps command

Also added auto start option
#3443

The README should be kept as simple and easy as possible, we'd like to put more detailed information into the documentation.
And I'll add a hint in this section, as well as update the documentation. However, thanks for the contribution!


Open the tsdb on a existing path

Open the database. If the path contains nothing, tsdb creates a new file layout.
Related to https://github.com/apache/skywalking/issues/8392

@lujiajing1126 you could load an existing database and don't have trouble testing the OAP integration anymore.

Please fix CI.


redpanda-client: 23.2.14 -> 23.3.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/redpanda-data/redpanda/releases.
meta.description for redpanda-client is: Redpanda client
meta.homepage for redpanda-client is: https://redpanda.com/
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 23.3.1 in filename of file in /nix/store/53sv1xi0kydhmw1m6glmp5hhnlizz7jw-redpanda-rpk-23.3.1

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
redpanda-client
redpanda-server

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/53sv1xi0kydhmw1m6glmp5hhnlizz7jw-redpanda-rpk-23.3.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A redpanda-client https://github.com/r-ryantm/nixpkgs/archive/cece54f2708ed0cb48b44453811fac0002b528ed.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/cece54f2708ed0cb48b44453811fac0002b528ed#redpanda-client

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/53sv1xi0kydhmw1m6glmp5hhnlizz7jw-redpanda-rpk-23.3.1
ls -la /nix/store/53sv1xi0kydhmw1m6glmp5hhnlizz7jw-redpanda-rpk-23.3.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package marked as broken and skipped:

redpanda-server

1 package built:

redpanda-client

Maintainer pings
cc @avakhrenev @happysalada for testing.

Result of nixpkgs-review pr 276200 run on x86_64-linux 1

1 package marked as broken and skipped:

redpanda-server

1 package built:

redpanda-client


Minor simplification in bundle_version script template

git rev-list offers a --count formatting option which:

Print a number stating how many commits would have been listed, and suppress all other output.

See man git-rev-list.
This is in my opinion a simpler command that the current version with | wc -l | tr -d ' '.

Fantastic


Readme and example file correction

As support_ is not been used instead _support_mask used everywhere changing in readme and example.py files

thanks!


Can this be used along with redux ?

Just wondering if this is safe to be used along with redux or will it cause any possible issues ?

Sorry, I'm not a maintainer, just an active user - but what is the case of it?


Foot vs kitty

Investigate do I need to migrate from the kitty to the foot.

I'll stay on kitty, because foot doesn't support the image preview.


Python config validation code

We can't validate as much as we could before.

Relationship stuff is much harder because we don't restrict the form of those rules the way we had to before.
Anything checking valid sqlalchemy fields doesn't apply anymore.

This turns back on the tests we can validate.

For posterity: we can't really validate actor_role/2 b/c we don't have a real actor to provide at validation time.
Would it be worth checking that actor_role/2 has at least been defined?

For posterity: we can't really validate actor_role/2 b/c we don't have a real actor to provide at validation time.
Would it be worth checking that actor_role/2 has at least been defined?

I think so. Same goes for parent_child if we encounter anything in the config that requires a relationship. And ideally same for role_allows (trickier since it would be called within an allow rule)--although for that I think it would be best to issue a warning because it could be commented for testing reasons. All could probably be taken as follow-ups if we have time.

I think so. Same goes for parent_child if we encounter anything in the config that requires a relationship. And ideally same for role_allows (trickier since it would be called within an allow rule)--although for that I think it would be best to issue a warning because it could be commented for testing reasons. All could probably be taken as follow-ups if we have time.

good idea — added to Notion task

Superseded by #976


Replication QUERY_EVENT issue

If I had 2 schemas, named test001 and tpcc.
They have one same name(say t2) table, when I change the table t2 of tpcc, the query_event returns the schema name is test001.
can reproduce this issue stably with Mysql5.x or Mysql 8.x
replication.QUERY_EVENT
event := ev.Event.(*replication.QueryEvent)
dbname := string(event.Schema)
//the dbname is test001
sqlstr := string(event.Query)
//the sqlstr is "ALTER TABLE tpcc.t2 ADD COLUMN desc10 VARCHAR(45) NULL AFTER desc9;"

it's the design of MySQL binlog replication. https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_replication_binlog_event.html#sect_protocol_replication_event_query You can find some material to learn about it.

it's the design of MySQL binlog replication. https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_replication_binlog_event.html#sect_protocol_replication_event_query You can find some material to learn about it.

Thanks!
But it's a strange design.

it's the design of MySQL binlog replication. https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_replication_binlog_event.html#sect_protocol_replication_event_query You can find some material to learn about it.

Thanks! But it's a strange design.

I remember it means the current database this session is on (USE db). So if the query doesn't specify the database name this field should act as the default value.


Chisquare Warning

According to my understand I believe there is a bug in the calculation of the warning for the chisquaretest currently lines 217 - 223 pandas_profiling/model/describe.py :
chi_squared_threshold = config["vars"]["cat"]["chi_squared_threshold"].get(
     float
)
if 0.0 < chi_squared_threshold < description["chi_squared"][1]:
    messages.append(
        Message(column_name=col, message_type=MessageType.UNIFORM, values={})
      )

From my understanding the if test should be:
if 0.0 < description["chi_squared"][1]< chi_squared_threshold:

Great catch. Note that there is another issue with the current condition. It is not clear that the "0.0" indicates that the threshold is not used. Better would be:
if "chi_squared" in description and description["chi_squared"][1] < chi_squared_threshold:

A PR is welcome (with some unit tests).
Side note: We're planning to add more statistical hypothesis tests.

Taken into account in the next release.


DatePicker: fix#22039 修复2.15.9 版本时间组件控制台报错

Please make sure these boxes are checked before submitting your PR, thank you!

[x] Make sure you follow Element's contributing guide (中文 | English | Español | Français).
[x] Make sure you are merging your commits to dev branch.
[x] Add some descriptions and refer relative issues for you PR.
相关issue链接:

https://github.com/ElemeFE/element/issues/22039
https://github.com/ElemeFE/element/issues/22025
https://github.com/ElemeFE/element/issues/21978
https://github.com/ElemeFE/element/issues/21941

居然没人管。

为何我没有找到currentPlacement 的定义之处。

为何我没有找到currentPlacement 的定义之处。

在 src/utils/vue-popper 里面

居然没人管。

应该是有人已经修掉了 #21908


refactor: move executors to revm crate

The revm implementations of the executor and executor factory should live in the revm crate. This allows us to use the abstractions in the reth-executor crate for the revm implementation (e.g. an executor cache :))
@gakonst asked why this move, and it basically highlighted that we have two paths:

Either we are generic over an executor (ExecutorFactory/BlockExecutor), or
We just integrate with revm

In the first case, this PR makes sense, in the second case, we could roll the revm and executor crates into one. I think the first one is better after some thought, since it allows us to experiment with other types of execution models later on (optimistically concurrent, newer versions of revm etc.)

Codecov Report

Merging #2076 (c45d53a) into main (84f58e3) will decrease coverage by 52.71%.
The diff coverage is 0.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@             Coverage Diff             @@
##             main    #2076       +/-   ##
===========================================
- Coverage   72.03%   19.32%   -52.71%
===========================================
  Files         435      435
  Lines       53255    53259        +4
===========================================
- Hits        38360    10291    -28069
- Misses      14895    42968    +28073

Flag
Coverage Δ

integration-tests
19.32% <0.00%> (-0.01%)
:arrow_down:

unit-tests
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

bin/reth/src/chain/import.rs
0.00% <0.00%> (-9.90%)
:arrow_down:

bin/reth/src/dump_stage/execution.rs
0.00% <0.00%> (ø)

bin/reth/src/dump_stage/merkle.rs
0.00% <0.00%> (ø)

bin/reth/src/node/mod.rs
0.00% <0.00%> (-7.39%)
:arrow_down:

bin/reth/src/stage/mod.rs
0.00% <0.00%> (-3.38%)
:arrow_down:

bin/reth/src/test_eth_chain/runner.rs
0.00% <0.00%> (ø)

crates/consensus/auto-seal/src/task.rs
0.00% <ø> (ø)

crates/executor/src/lib.rs
0.00% <ø> (-100.00%)
:arrow_down:

crates/revm/src/executor.rs
0.00% <0.00%> (ø)

crates/revm/src/factory.rs
0.00% <ø> (ø)

... and 4 more

... and 286 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Allow custom path for settings.ini

Search for the settings.ini or .env in custom paths.
Useful when the application settings is usually found in
/etc/<myapp>/
/etc/<organization>/<myapp>

This is related to #9

#28 is duplicate of this PR.


fix isoDate hour date formatter from hh to HH (hour 0-23)

Added a test which fails for an ISODate, then fixed.  This was the failure output:
org.bson.json.JsonReaderTest > testDateTimeISOString2 FAILED
    java.lang.AssertionError: expected:<1380888450443> but was:<1380845250443>
        at org.junit.Assert.fail(Assert.java:88)
        at org.junit.Assert.failNotEquals(Assert.java:834)
        at org.junit.Assert.assertEquals(Assert.java:645)
        at org.junit.Assert.assertEquals(Assert.java:631)
        at org.bson.json.JsonReaderTest.testDateTimeISOString2(JsonReaderTest.java:126)

373 tests completed, 1 failed

ref:
https://groups.google.com/forum/#!topic/mongodb-dev/t0Z7iZsSbGw

i don't think the CI build failure was related to my code changes.

Reported this as a bug at https://jira.mongodb.org/browse/JAVA-1792 and merged on the command line after amending the commit to change the name of the test and add the Jira issue number to the commit log.
Thanks so much for finding this.


refactor: move code

#477  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @hi-ogawa and the rest of your teammates on  Graphite


As a user I want to be able to access the daily maze game on a web browser, so I can play the game.

[x] Create a web page to host maze
[x] Display maze on webpage locally
[x] upload to github and let read the data from json file
[x] Commit webpage updates to repo

New tasks:

[ ] Add controls to walk in the maze
[ ] check whether the user finished the maze


Allow specifying --kube-version option for Helm command

What would you like to be added:
      --kube-version string          Kubernetes version used for Capabilities.KubeVersion

https://helm.sh/docs/helm/helm_template/
Why is this needed:

/assign @Hosshii


Any Plans to support .net core?

The build uses VS2017, so it is technically possible to support both .NET Framework and .NET Core. I currently have no time for this, if you have time, you're free to send a PR.
A starting point would be https://docs.microsoft.com/en-us/dotnet/core/porting/project-structure

@DSUK I've published package <IP_ADDRESS> on NuGet which supports both net452 and netstandard1.5
Can you test this package in a .NET Core project and give me feedback? Thank you!

Hi, Thanks for doing this 👍 ,
The source itself works great if I manually add it to a project but the package when I install it via Nuget will throw an error.

Install-Package : Package DerConverter <IP_ADDRESS> is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package DerConverter <IP_ADDRESS>
supports: net452 (.NETFramework,Version=v4.5.2)

Hi, that version certainly won't work 😄
Can you try with the latest package version, should be <IP_ADDRESS>

Closing this as I have the feeling that you have this resolved by now. If not, feel free to re-open! Cheers!

Sorry, forgot to reply
I did manage to get this working :).


后端代码开发和调试问题 Backend code development and debugging issues

开发者你好，我是一名后端开发新手，我希望在后端代码上进行一些扩展开发，请问我应该采用什么样的开发方式比较合理呢？下面是我经过尝试后的几种想法：
1.本地配置相关环境，在本地进行开发和调试。
2.本地修改代码重新build，然后在docker中运行代码并调试代码。（我个人理解这是官方文档中推荐的方式？但是调试代码并不方便）
3.使用vscode直接在容器中修改和调试代码。（我查询到vscode中的dev containers似乎提供这种支持）
我希望能够采用第3种方式直接在容器中进行开发和调试，这样不需要配置本地环境，但是目前还没有配置成功。所以我想请问一下推荐的开发方式是怎样的呢？如果第3种方式是可行的或合理的，能否提供一些配置细节？
Hello developers, as a backend development beginner, I'd like to extend the backend code. Could you please advise on a reasonable development approach? Here are a few ideas I've considered after some experimentation:
1.Setting up the relevant environment locally and doing development and debugging locally.
2.Modifying code locally, rebuilding it, and then running and debugging the code in Docker (I understand this to be the recommended approach in the official documentation).
3.Using VSCode to directly modify and debug code within a container (I've found that VSCode's dev containers seem to support this).
I would prefer to adopt the third approach of directly developing and debugging within a container, as it avoids the need to configure the local environment. However, I haven't been successful in setting this up yet. So, I'd like to ask for advice on the recommended development approach. If the third approach is feasible or reasonable, could you provide some configuration details?

We recommend the first way, if you only want to modify the backend service, you can develop it as your normal java spring application, you can connect your local mysql and redis service or services running in docker compose (using the host binding port), be sure to change the related service address in application config.
If your want to develop frontend service also, you can config the frontend service's local dev server to proxy api requests to your local backend service or services running in docker compose. For more details, you can reference README docs or development configs under each service.

Thank you for your reply.


Add externs for Angular 1.5 component

As described in https://docs.angularjs.org/api/ng/provider/$compileProvider#component.

@mprobst Can you take a look at this?

One nit, LGTM otherwise.

Shouldn't the typedef with a record type allow passing objects that are lacking the optional fields?
/** @typedef {{foo: string, bar: (number|undefined)}} */
var Foo;

/** @param {!Foo} foo */
function useFoo(foo) {}

useFoo({foo: 'asd'}); // no 'bar'

Thank you @mprobst, I updated the PR.
With a compiler from October and the --jscomp_error "*" flag, I had an initializing variable error.
With a version from December it now passes, which is very great!
Is it a new feature?

I have a pile of Travis builds stuck in creation mode. I cannot cancel jobs; could someone try to cancel the older ones and restart the last one?

@gberaudo Travis just takes a while during US business hours... Hang in there :)

OK, will try to be patient ^^.

@gberaudo: my understanding was that this was always the intended behaviour, but this aspect of Closure Compiler seems like a less well-trodden path.


Why arange and not range?

The latest API specification defines max, i.e., compared to numpy.amax the "a" prefix is dropped. I had always assumed the "a" is historic — from times when more people used from module import * — to avoid clashes with the builtins.
Therefore I wonder: Why is the "a" prefix not dropped in arange? Is it an oversight or intentional?

For the API comparison which helped motivate the continued use of arange, instead of range, see the API comparison data.
In this case, we opted for sticking with convention and, thus, the naming is intentional. As this question is answered, will go ahead and close out.


Support 'priority' for ball_hold and ball_lock devices

This PR adjusts the behavior for ball_holds and ball_locks to support relative priority.
Currently, when a ball lock creates its ball_enter handler, it uses the priority of the mode it's in. When a ball hold creates its ball_enter handler, it uses no priority.
This change configures both holds and locks to use the mode priority plus an optional priority: config value. As a result, a ball hold and ball lock in the same mode can have a predictable order of event handling.

Nice!


Added article "a" for grammar consistency

It seems there's a missing article here for the indefinite noun "function", which is referred to as a singular noun with the article "a" in previous sentences.

Thanks!


Remove circular linking dependencies in Ginkgo

This is from a discussion which arose in PR #199.
Without giving the code in this PR much thought (sorry, currently don't have time to look into PRs), I just wanted to share my thoughts on the circular linking issue, and a possible way to resolve it.
A while ago, @tcojean pointed out weak symbols in a different context. From then, I was thinking if we can exploit them to simplify building Ginkgo and its kernels. Here is a possible solution:

Instead of compiling separate dummy modules from the device_hooks sources, we compile those sources as part of the ginkgo shared library, and just define them as weak symbols. This effectively removes the ginkgo <- modules dependecies.
We compile the modules as usual, but now explicitly include ginkgo as their dependency. This should fix any linking issues we might have when compiling Ginkgo, and duplicate symbols should not be a problem since one of them are weak symbols.
During application linking, we link with ginkgo and all modules, and the strong symbols from the modules should take precedence from the weak ones in the core ginkgo library.
Note that we may still need to compile dummy modules (with the same sources from device_hooks, but as strong symbols) to avoid recompilation of user software when a module first becomes available.

The only issue with this may be cross-platform compatibility. Reading online, it seems that weak symbols are officially supported on linux and mac, but windows is (once again) an issue. Looking at the answers it seems that (depending on who you believe), windows selects the appropriate symbol automatically (maybe from linking order...), or that there are undocumented pragmas used in their system libraries to do that, which can be exploited. One possibility would be to drop shared library support for windows entirely (since it doesn't even work now due to exporting / importing symbols), and just aim for static libraries on windows.
A completely different approach could be based on dynamic loading, but I think that could give us even more platform specific issues.
Originally posted by @gflegar in https://github.com/ginkgo-project/ginkgo/pull/199#issuecomment-455266381

The current status of this is that this is a bug, so I added the Bug label. I will look into all the possible solutions and share my plans here.
Indeed, the reference module (at least gmres, but there should be other) requires to link against the core Ginkgo library in order to find all of the Dense function definitions (add_scaled and whatnot). A way to fix this would be to add a link from reference to the core, but we cannot do that for shared libraries as this creates a cycle in the dependency graph (core requires the reference module).
On MacOS, this completely prevents compilation. For some reason, it looks like Linux ignores this problem entirely, but it is a problem.


Exporting History can have more fields

At present exporting history gives only title , brand  and barcode . More fields can be added .

@teolemon Require your opinion as to whether this issue is ok with you .

@PrajwalM2212 what do you suggest putting into this? We do not want to make the file too big


fix: Make AVCaptureDevice.sensorOrientation safer

What
Makes the getter for sensorOrientation safer by checking if we can set a preset, add the input, and add the output before actually doing it.
This could prevent some crashes with external/continouity cameras.

Changes

Tested on

Related issues

This fixes https://github.com/mrousavy/react-native-vision-camera/issues/3048.


Confusing

"However, to preserve the ability of Business Central to rename a dimension and dimension value, table 348 Dimension Value is extended with an integer field of Dimension Value ID. This table converts the field pair Dimension and Dimension Value to an integer value. When you rename the dimension and dimension value, the integer value is not changed."
Table 348 = Dimension
Table 349 = Dimension Value
Both have a new field

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

ID: 5fa1c60c-f467-229b-7f28-c3b50a1c1287
Version Independent ID: 631c9844-2971-824c-5b56-09e45d361121
Content: Design Details - Searching for Dimension Combinations - Business Central
Content Source: business-central/design-details-searching-for-dimension-combinations.md
Service: dynamics365-business-central
GitHub Login: @SorenGP
Microsoft Alias: sgroespe

Thank you for the feedback - Changed to "table 349". The fix is available within one week.

I would have understood that BOTH tables are affected:
If you rename a Dimension: T348
If you rename a Dimension Value: T349
Therefore I believe the phrase is incomplete

Only T349 has the Dimension Value ID field, which is used when renaming both a dimension (in T348) and a dimension value (in T349).
The only error in the topic was that it said "table 348". This is changed to "table 349".


Unetbootin Request

PackageIdentifier:Unetbootin
PackageVersion: 702
PackageLocale: en-US
Publisher: Geza Kovacs
PackageName: unetbootin
License: open source
ShortDescription: app for create bootable USB
Installers:
Architecture: x64
InstallerType: exe
InstallerUrl: https://github.com/unetbootin/unetbootin/releases/download/702/unetbootin-windows-702.exe
ManifestType: singleton
ManifestVersion: 1.0.0

We cannot add this because it is not an installer. Or do you have an installer URL?

Hi,
I only have this github page (https://github.com/unetbootin/unetbootin). What do you think?

I think there is no installer. We will probably have to wait until portable/standalone apps are possible. https://github.com/microsoft/winget-cli/issues/182

@quhxl @dtantono we can use this: https://github.com/unetbootin/unetbootin/releases/download/702/unetbootin-windows-702.exe

We can't because it's an portable application and not an installer...

oh, yes! i forgot winget still lacks support for portable apps. 😞

Close with reason: Resolved by #68804;


Number before macro execution does not execute macro multiple times

In vim, executing a macro like "@q" executes it once, but typing "10@q" would execute it 10 times. This does not seem to be the case here.

Replaying a macro multiple times works for me (although I managed to freeze atom this way). Strangely hitting @q 10 times yields a different result that hitting 10@q, mainly with respect to line breaks, but there may be other occasions where this breaks.

I have the same issue. I'm using vim-mode-plus. Doing "10@q" won't execute the macro 10 times. It only does it once unless my macro is something like "j", but a more complex macro that ends in "j" will only run once.

Having the same issue

Yup same


Passing function as arguments?

**Operating system or device - Godot version: Windows 10, Godot 2.1.2 stable **
Is it possible to pass functions through variables?
Similar as in Javascript like this:
var MakeRain = function MakeRain(){
bunchOfCodesToMakeRain();
}
Map(MakeRain);

Inside the Map:
function Map(dosomething)
{
dosomething() //which will cast MakeRain, or any function.
}
Is this possible in Godot? Sending function as arguments.

Please note that this issue tracker is for... issues, i.e. bugs or feature requests :)
For general support question you should use the Q&A, which happens to have the answer for your question: https://godotengine.org/qa/2551/function-calling-using-dictionaries?show=2562#a2562


Preparing Release for Schema Registry

Description
Preparing release for Schema Registry

azure-data-schemaregistry
azure-data-schemaregistry-apacheavro

If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

Please and Thank You.

please and thank you

privacy issues data loss


1.20.4 ?

Title :D

Hi, could you please be more precise?

Sorry for confusion, wanted to ask if this mod is planned to be on 1.20.4

You mean with the Pale garden stuff or the Trial chambers?
Currently neither of them is planned because of internal stuff and I don't want to make the mod from scratch


Generating snapshot update files is still desirable in CI environment

What happened?
Hi, I'm the current maintainer of bandwhich, and I was trying to debug a weird test failure on Windows CI. This is a very random/unstable test error that happens on Mac and Windows environments, but which I am unable to reproduce on a local Windows VM.
Linked is one such occurrence of this failure. As you can see, the new result looks identical to the snapshot in logs despite being actually different. Therefore in this commit I tried to upload the artefacts so I can diff them locally, but to my surprise cargo-insta isn't generating snapshot update files in CI.
So I did my due diligence, searched the issues here, and quickly found #344 and #345. It seems like CI detection is indeed working as intended, but the behaviour of not generating updated snapshots is undocumented and surprising (in a bad way).
Since I cannot really think of a downside to generating these files in CI, I think it would be better behaviour if insta does both in a CI environment (print the diff and generate the .snap.new files). Just in case (such as the one here) the user wants the updated snapshot files for whatever reason.
Reproduction steps

Use cargo-insta in CI
Induce a test failure
Observe that .snap.new files are not generated

Insta Version
1.33
rustc Version
No response
What did you expect?
cargo-insta generates .snap.new files in CI too, just like in non-CI environments.

I'm not entirely opposed to making this change but in most cases you cannot actually do anything with these files. If you do want them generated, you can already accomplish this by exporting INSTA_UPDATE=new in which case it will always write .new files, even in CI.

Thanks for the quick response. Hey I'm happy as long as there is a way to specify this behaviour. If you feel like the current default is better I have no objections.
I noticed though that insta uses quite a few environment variables; some standard, some custom. But I cannot seem to find a place where they are collectively documented. Does such documentation currently exist? If not please consider this a suggestion. Thanks.

I believe the full list of settings is down here: https://insta.rs/docs/settings/

I added a section on how to use this on github actions to the docs: https://insta.rs/docs/patterns/#uploading-snapshots-from-github-actions

Awesome. But you actually need if: ${{ failure() && steps.run_tests.outcome == 'failure' }} for the upload step to run.
See GitHub documentation.

Thanks. Changed.


Change repository to mcr.microsoft.com

Update the docker files to use mcr

@TravisEz13 @anmenaga Please have a look.

as discussed offline, this is not what the PowerShell build uses.  These files are just samples.


2 android phone can't connect,why?

I have the same issue. Any ideas?

hey I am facing the same. have you found any solution??

Go to #22 thread, same issue


Fixing if condition

Coverage remained the same at 63.374% when pulling 07d80ad3b1547d3791ec8826f8dc3bec15d3d468 on photos-fix into b52902c20e648a620dad35834433e879309dcc37 on develop.


CoreDNS Add-On description links to deprecated method

This is a Bug Report

Problem:
On https://kubernetes.io/docs/concepts/cluster-administration/addons/ the "CoreDNS" statement reads "CoreDNS is a flexible, extensible DNS server which can be installed as the in-cluster DNS for pods." but the link to https://github.com/coredns/deployment/tree/master/kubernetes states "These kube-dns/CoreDNS migration scripts and templates are deprecated. For deploying coredns, use the coredns helm chart, or the yaml templates maintained by kubeadm."
Proposed Solution:
Update links to helm chart (I think it's https://github.com/coredns/helm/tree/master) and kubeadm template (no idea where those live).
Page to Update:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

I suggest:

link to https://coredns.io/manual/installation/
if https://coredns.io/manual/installation/ doesn't explain how to deploy using Helm, update that page https://coredns.io/manual/installation/ as well

explain how to deploy using Helm

I have investigated, but the installation manual does not include the Helm deployment explanation.

I think we should update both the references.

I would like to work on this issue.
/assign


Option to change the size of the icons

Hi,
is it possible to change the iconsize (or could it be an option in the future)?

Hi @axelf. Unfortunately vscode doesn't allow to change the icons size. The icons are static svg images picked from a path without any kind of configuration (excluding the association).
Maybe you can open this issue to the vscode team to ask this feature.


Add namestyle for local variables in the outermost scope module_local_name_style

This PR introduces a new namestyle module_local_name_style, which allows to specifiy a separate namestyle for local variables, that have no scope except the outermost one.
This allows to force a different name style whenever local variables are not within e.g. a function for easier distinction.
It is applied when local_name_style would be applied, but the variable is in the outermost scope. To not change the behavior in existing configurations, the configuration falls back onto the configuration of local_name_style in case the module_local_name_style is not explicitly configured.
This namestyle is independent of the existing module_name_style and require_module_name_style.
(Chinese documentation was translated from English using ChatGPT)

Re-created PR for merge into original repo: https://github.com/CppCXY/EmmyLuaCodeStyle/pull/177


Add Command-Line Driver

For testing purposes, it would be nice to have a command-line tool for specifying a spec and running on some data.

Delivered in v1.1.2.


new a11y rule: accessible headings

All heading elements (h1..h6) should have text content
• https://oaa-accessibility.org/rule/39/
• https://github.com/globant-ui/arialinter/blob/master/lib/rules/headingsAndLabels.js
Text content for a heading must not come just from image alt text. (http://oaa-accessibility.org/wcag20/rule/19/)
Heading content should be concise. (http://oaa-accessibility.org/wcag20/rule/20/)
Heading elements (h1..h6) should be used for structuring information on the page. (http://oaa-accessibility.org/wcag20/rule/23/)
Missing or empty H1 element. (http://oaa-accessibility.org/wcag20/rule/14/)
H1 element content should not come only from the alt text of an image. (http://oaa-accessibility.org/wcag20/rule/15/)
H1 should match a subset of the words in the title element. (http://oaa-accessibility.org/wcag20/rule/16/)
No more than two h1 elements. (http://oaa-accessibility.org/wcag20/rule/17/)

Hi @JoshuaKGoldberg, I'd like to try this one out.
possible?

Absolutely, please do!

Hi @JoshuaKGoldberg, @HamletDRC
In order to better understand this rule can you please help with the following questions:

What is a11y?
"Heading content should be concise.." how can I determine?
"Heading elements (h1..h6) should be used for structuring information on the page...", how do you enforce this?

Thanks in advance!

What is a11y?

Accessibility. Ironic that the term for making things more accessible is a subtly inaccessible term. 🤷

2 _"Heading content should be concise.." how can I determine?

The link in the OP no longer has any real info and I can't find anything else on the internet... How about limiting to a maximum number of characters or to a single sentence? Maximum number of characters would be easiest to implement as a configurable rule; keeping to a single sentence is surprisingly difficult.

"Heading elements (h1..h6) should be used for structuring information on the page...", how do you enforce this?

Maybe it's that if a heading comes after another heading, the number must never increase by more than 1?
// Ok

One

...

Two

...

// Not OK

One

...

Three

...

If it's not that, I have no idea. 😄


change the assert for admin port change

Some times the rest api call returns an incorrect exit code and this change checks if the test needs to be failed in case if the error stream is not null and non empty
https://build.weblogick8s.org:8443/job/weblogic-kubernetes-operator-kind-new/4945/

LGTM. Run the parallel tests

Updated it with parallel run results


old fights not callingout.

So, I noticed this happend to a user before; But it seems to happened to me How do i fix it
The Problem is:
The OLDER Fights such as E4S Won't call out 'Corner/Cardinal' Left / Right, Get off back left get off top left, For example; Which i don't get why as the New Raid Tier Works. Am i doing something wrong?

Are there any errors in your overlayplugin log? Can you zip up and attach a Network log from doing e4s in case something changed?

Hi, is this still happening?

No actually it seems fixed but tbh I haven’t really been able to test it
yet I did one trial run and it seemed fixed you can close my ticket bout it
I’ll remake it if it’s not sorry for not getting back to you
On Sun, Apr 26, 2020 at 4:21 PM Adrienne Walker<EMAIL_ADDRESS>wrote:

Hi, is this still happening?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/quisquous/cactbot/issues/1310#issuecomment-619626865,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APCCY6KLMZ3ZOXYMA7RV2FTROSQWDANCNFSM4MARJAFA
.

No worries at all.  Glad it seems fixed, and sorry there wasn't a clearer answer!


[Feature] Add the ability to add rows of items

Hi 👋🏿,
Been using this plugin for a while and am very pleased with it, many thanks. I recently went down the path of trying to add my sessions to my dashboard (I have a lot) and one issue I've hit is that I can create columns of items so I'm constrained to vertical space but have plenty of free horizontal space.

As you can hopefully see from the screen shot since I want to keep the quote and my buttons I'm stuck with being only able to show a few session but there is so much horizontal space available that if I could create a row of session columns I could get probably two (or maybe a bit excessive three) columns in the top section.
WDYT?
NOTE: the sessions are interactive so I can do it by just drawing lines that happen to look like they are two separate columns I actually want to do a column of items

yeah this has been requested at least once before, I think it's somewhat easily doable. I'll try to get around to this

Thanks for the awesome plugin! Any update on being able to add columns of content?

Thanks for the awesome plugin, does it look like this feature will come along?