Add hash values to maintain tab between page loads

Hey @Gobluebro, I thought it would be neat to set hash values in the url to land you on the correct tab each time you hit the site, rather than always defaulting to "Quests." The default remains "Quests" if no hash value is present, or the hash value is a bad value. Seems useful so you don't have to constantly switch tabs anytime you come back to the page (an issue I have frequently with an otherwise great web app!) Thanks!

Thanks for your interest in the project.
I'd going to make some changes before pulling.
In the meantime, I do have a question. Are you saving the whole url when you are coming back to this page? I guess I'm confused on how you'd come back to it with the tab already in the URL. Maybe we should be storing the current tab in local storage so anytime you comeback to the page you can resume where you left off even if you don't have the url hash included.

Another question, do we need to keep a history of what tabs you have been on? Currently this code will continue to update your browser history every time you click a new tab. I don't know what the benefit of that would be. I'm going to change it so the history doesn't update every time.

@Gobluebro  So the use case is that I use the checklist on my phone, and switch between the checklist and the Elden Ring wiki a lot. When navigating back to the checklist browser tab in Chrome, sometimes the page reloads which drops you back off at the "Quest" checklist tab (iOS + Chrome, though I'm sure most mobile browsers do this, I think its a memory saving thing).
Yeah, that is a good point, I don't think its neccessary to store browser history entries at all, and makes much more sense to just store in local storage for anytime you come back to the checklist.
I just added a commit that uses local storage, instead of hash values.

So when you switch back and forth from mobile to desktop, does your checklist state sync? It saves all of your progress through local storage, but I assumed that was localized per device.
If it is the case that chrome is syncing both phone and desktop local storage then this solution should work well

@Gobluebro Sorry, when I said iOS + Chrome, I meant I use it mobile only using Chrome on iOS.
Local storage is per device, as far as I know.

Ah okay thanks you for clarifying

I have a hook that does this local storage work for me. I replaced the default enum value and made quests the default value in the hook.

@Gobluebro woohoo! Thanks for the awesome checklist!

Thank you for the kind words and for helping make this website better


Add support for One-JAR

https://github.com/rholder/gradle-one-jar

Even better, ProGuard: https://www.guardsquare.com/en/proguard


alignment when using hamburger menu

What happened?
Thanks for v2.5.0 !
Just one question: is it normal that the text moves so much to the left when opening the hamburger menu?
See in this video:
https://user-images.githubusercontent.com/17910063/212926016-30e1d996-e35c-4342-9d04-28540ec1ac59.mov
Regards,
Antoine
Theme version
v2.5.0
Hugo version
v0.101.0
What browsers are you seeing the problem on?
Chrome, Safari
Relevant Hugo log output
No response

Oof, no. That is definitely a bug! Thanks for pointing it out. I suspect it's a result of the changes required to fix #399. Cross browser CSS is hard!


Debugging npm run test doesnt work - Unverified breakpoint

I followed the receipe/tutorial of https://github.com/Microsoft/vscode-recipes/tree/master/Angular-CLI.
I can debug the normal code using npm start and breakpoints get hit.
However debugging tests like described here doesnt work.
As soon I launch ng test from debugging view , the breakpoint in the test is suddenly unverified.
Whats also strange is that in the chrome which opens the debug site, I need to manually hit refresh to display something.
Do you have any idea?
OS: Windows 10
Angular-CLI: 7.0.2
VS-Code: 1.29.1 (system setup)
Debugger for chrome: 4.11.1

+1

This might get closed/fixed by #179.

This config works for me 😄
     {
        "name": "ng test",
        "type": "chrome",
        "request": "launch",
        "url": "http://localhost:9876/debug.html",
        "webRoot": "${workspaceFolder}",
        "sourceMaps": true,
        "sourceMapPathOverrides": {
          "/./*": "${webRoot}/*",
          "/src/*": "${webRoot}/*",
          "/*": "*",
          "/./~/*": "${webRoot}/node_modules/*"
        }
      }

I run in a console node ./node_modules/@angular/cli/bin/ng run APPNAME:test --watch=true --source-map
Then, when I run the config that @WtfJoke supplied above, I get the following error from VS Code
Cannot connect to runtime process, timeout after 10000 ms - (reason: Can't find a valid target that matches: about:blank. Available pages:  ...
If I manually open http://localhost:9876/debug.html after running the above mentioned ng run ...test command, then launch the above config via vs code, I get the same error.
If I attempt to attach to an existing process via VS Codes attach config , e.g.
{
      "type": "chrome",
      "request": "attach",
      "name": "Attach to Chrome",
      "port": 9222,
      "webRoot": "${workspaceFolder}"
    },

I can pick the opened browser tab of http://localhost:9876/debug.html, but the breakpoints I have added in my unit test code are now grayed out and not verified.
Trying the below config, results in the same unverified breakpoint problem too.
{
        "name": "ng test",
        "type": "chrome",
        "request": "attach",
        "url": "http://localhost:9876/debug.html",
        "webRoot": "${workspaceFolder}",
        "sourceMaps": true,
        "sourceMapPathOverrides": {
          "/./*": "${webRoot}/*",
          "/src/*": "${webRoot}/*",
          "/*": "*",
          "/./~/*": "${webRoot}/node_modules/*"
        }
      }

I think you have another issue on your end @joshvito
Neverthless try following:
With my provided config you simply start tests by running just ng test in your console (if you havent installed angular probably ./node_modules/@angular/cli/bin/ng test does the trick as well). Then a chrome browser should pop up running all your tests.
After that, set your breakpoints in tests and start  the "ng test" launch config in vs code. Then an additional chrome pops up and your breakpoints should get hit and there shouldnt be unverified breakpoints anymore.

When the second browser opens, it doesn't navigate anywhere. Empty address bar, then I get the timeout error message. Shouldn't the second browser be navigating to the url defined in the debug profile?

I also have the same issue, the browser opens and does not navigate anywhere, and then I get the error popup "Cannot connect to runtime process, timeout after 10000ms - (reason: Can't find a valid target that matches: about:blank. Available pages: ["http://localhost:9876/?id=77064511"])."

This is how I got unit test debugging working within VS Code
> npx @angular/cli@next new dream-app
 # this command should install version 8.0.0-beta.7 of @angular/cli as of March 21, 2019

After creating the project, look in package.json, jasmine-core version should be >= 3.3.0
    "jasmine-core": "~3.3.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.0.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",

If you already have an angular project, just update these test dependencies.

Your VSCode Debug config(.vscode/launch.json) should look like this:
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "ng test",
      "type": "chrome",
      "request": "launch",
      "url": "http://localhost:9876/debug.html",
      "webRoot": "${workspaceFolder}"
    }
  ]
}

> npm test

Now, start debugging through VS Code. Set breakpoints in any *.spec.ts file

Note: :gun:
Make sure you don't have code coverage enabled in tests during development. Even though breakpoints would be correctly set for *.spec.ts files, breakpoints would be incorrectly mapped for *.component.ts file. Explanation: Disable Code Coverage in dev mode

In CI, you could do something like for enabling code coverage (Angular CLI 8)

  "scripts": {
    "test:ci": "ng test --no-watch --no-progress --code-coverage"
	}

I have a clean project setup using Angular CLI 7.3.8, and followed the debugging setup instructions  (at the time last updated Feb 27, 2019) - the ng serve debugging worked, but when debugging with ng test the breakpoints were not being hit
I added "webpack:/*": "${webRoot}/*" to the launch.json sourceMapPathOverrides for ng test and the breakpoints were then hit. This was a known fix for a pervious version of the CLI too
"sourceMapPathOverrides": {
	"webpack:/*": "${webRoot}/*",
	"/./*": "${webRoot}/*",
	"/src/*": "${webRoot}/*",
	"/*": "*",
	"/./~/*": "${webRoot}/node_modules/*"
},

@prabh-62 is right codeCoverage: true in angular.json breaks debugging. Thanks!

Recipe updated in https://github.com/microsoft/vscode-recipes/pull/212


Target Locator does not support accessibilityID in mobile for webdriverio integration

accessibilityLabel is used for both ios and android to set unique locator strategy
however serenityJS does not seem to support this
in my example code
I use
by.css
export class SearchPage {
static inputSearch = Target.the("search bar").located(by.css('~search-bar'));
it does not work
https://github.com/LayMui/foodie for the automation code
https://github.com/LayMui/food for the app

Hey @LayMui!
I haven't worked with React Native, so am not sure why the accessibility idea wouldn't be working...
But let's walk through it, maybe we'll figure it out together:

Serenity/JS by.css selector for WebdriverIO is a simple pass-through to $(selector), so by.css('~search-bar') is an equivalent of calling $('~search-bar')
WebdriverIO ~ is a shortcut for finding elements by their accessibility ID, so that should work too
in your app, you seem to be setting the accessibility (search_bar) correctly using this helper function

BUT
If you look at the React Native docs for accessibilityLabel, you'll notice that the accessible property is set to true:
<TouchableOpacity
  accessible={true}
  accessibilityLabel="Tap me!"
  onPress={onPress}>
  <View style={styles.button}>
    <Text style={styles.buttonText}>Press me!</Text>
  </View>
</TouchableOpacity>

While the helper function does not seem to set it:
   export function testProperties(id, disableAccessible = false) {
    const disableAccessibility = disableAccessible ? { accessible: false } : {};

    return { ...disableAccessibility, accessibilityLabel: id };
  }

Have you tried setting it to true?
   export function testProperties(id, disableAccessible = false) {
    const disableAccessibility = disableAccessible
      ? { accessible: false }
      : { accessible: true };

    return { ...disableAccessibility, accessibilityLabel: id };
  }

I got a step definition issue now
at Step "he wants to search for restaurant name Dolce" is not defined. You can ignore this error by setting cucumberOpts.ignoreUndefinedDefinitions as true. [iPhone 11 iOS 14.5 #0-0] Step "he wants to search for restaurant name Dolce" is not defined. You can ignore this error by setting cucumberOpts.ignoreUndefinedDefinitions as true.
see line 19 https://github.com/LayMui/foodie/blob/master/src/step-definitions/SearchForRestaurant.steps.ts
Did I miss something here?

Check out the docs on Cucumber expressions, particularly parameter types:

Parameter Type
Description

{int}
Matches integers, for example 71 or -19.

{float}
Matches floats, for example 3.6, .8 or -9.2.

{word}
Matches words without whitespace, for example banana (but not banana split).

{string}
Matches single-quoted or double-quoted strings, for example "banana split" or 'banana split' (but not banana split). Only the text between the quotes will be extracted. The quotes themselves are discarded. Empty pairs of quotes are valid and will be matched and passed to step code as empty strings.

{} anonymous
Matches anything (/.*/).

I have fixed that.
now I got another issue
ConfigurationError: Jan can't BrowseTheWeb yet. Did you give them the ability to do so? [iPhone 11 iOS 14.5 #0-0]
I have pushed the changes to
https://github.com/LayMui/foodie/

I have to add this code to the Given step
Given('{actor} is at the food app', async (actor: Actor) => {
    actor.whoCan(
        BrowseTheWeb.using(browser))
});````

however, this ability is already defined in the Actors.ts file at ./src

even I after added the above code
I am still unable to find the accessibilityID with the screenplay Target method

I got this error seen
Error: Can't call addValue on element with selector "~search-bar" because element wasn't found

I don't think it's the food app testProperties issue becos this works for using the webdriverio without the serenityJS screenplay

I also verify using the accessibility inspector the locator strategy for accessibilityID/Label is there for that element

the changes are at https://github.com/LayMui/foodie

@jan-molak I was looking at this
https://github.com/serenity-js/serenity-js/blob/master/packages/webdriverio/src/screenplay/questions/locators.ts
it need to support the mobile accessibilityLabel:
https://webdriver.io/docs/selectors#accessibility-id
do you think there is need to add to the locator for accessibilityID (for mobile)?

Hey @LayMui - I'd need to debug it with your app, it's hard to tell at this stage I'm afraid.

@jan-molak you may clone the repo
https://github.com/LayMui/foodie
the app repo is at
https://github.com/LayMui/food


can't reproduce similar performance on waymo dataset

Background:

config: tools/cfgs/waymo_models/voxelnext2d_ioubranch.yaml

pytorch version: 1.9.1+cu111

spconv version: 2.2.6

loss log:
Train: 12/12 (100%) [ 988/989 (100%)] Loss: 4.254 (5.10) LR: 3.015e-08 Time cost: 14:15/00:00 [2:56:45/00:00] Acc_iter 11868 Data time: 0.00(0.06) Forward time: 0.29(0.81) Batch time: 0.30(0.87)

I get zero AP/APH on all object types. And looks like I am getting a lot of weird extents
Tiny box dim seen, return 0.0 IOU.
b1: center_x: 5.7256546020507812
center_y: 11.504196166992188
center_z: 2.9886384010314941
width: 22.703926086425781
length:<PHONE_NUMBER>171875
height: 0.00077404256444424391
heading: -2.1097447872161865
could you hint a bit where I may do it wrong?

Hi,
This is really weird.
Would you please provide me your total log file?
What number of GPUs you use?
Would you please tell me your e-mail? I will send your my checkpoint. You can have a test on it to check if the problem exist in training or testing.
Regards,
Yukang Chen

Discussed with Yukang, and found out it should be related to spconv version.
using sponv2.1 instead of spconv2.2 should fix the issue above.

Discussed with Yukang, and found out it should be related to spconv version.
using sponv2.1 instead of spconv2.2 should fix the issue above.


Detect changes in URL

For example, if you click an issue in the issue list any links on the issue that loads will not be detected by the extension.
Pretty sure this is because it's not a full page load which is currently the only thing the extension script is set to run after. Should be some info the the Chrome extension docs about how to detect this change efficiently and call the required functions when the location/url changes.

Implemented a basic check for this, its pretty unreliable at the moment, works about half the time from what I can tell.

This can be improved by watching chrome.tabs.onUpdate and sending a message to the updated tab to re-insert iframes. However it will require tracking which iframe are/are not embedded already as to not embed the same iframe more than once. (Issue #4 )


Fix for retina

Can probably ignore this - the pixi renderer seems to have sorted it

BTW this is a great library - I've tried a few and its been a breeze to learn in comparison to others


Action remove my commit history

Hi,
I used your action in my integration https://github.com/bosch-thermostat/home-assistant-bosch-custom-component
name: "Validation And Formatting"
on:
  push:
  pull_request:
  schedule:
    - cron: '0 0 * * *'
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        name: checkout
      - uses: actions/setup-python@v2
        name: Setup Python
        with:
          python-version: '3.8.x'
      - uses: actions/cache@v2
        name: Cache
        with:
          path: |
            ~/.cache/pip
          key: custom-component-ci
      - uses: hacs/action@main
        with:
          category: integration
          ignore: wheels
      - uses: KTibow/ha-blueprint@stable
        name: CI
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

and since February/March it removes my commits history...
You can see here https://github.com/bosch-thermostat/home-assistant-bosch-custom-component/commits/master that first commit is in March and I maintain this integration for 2-3 years.
For now I removed thiat action.

Well it's deprecated. I added a notice. Anyway, feel free to look at the code for how it integrates the formatter.

Ok, thanks!


Data retrieval module migration from Python to Go

Complete the migration of the data retrieval module for video metadata from the Python legacy code to Go.
Create goroutines for data retrieval
Setup sample output module to save retrieved metadata to JSON files

does this issue is repeat with #3 #4 ?


Make it possible to have Monday as start of week

Hi @scottbedard, me again, maybe you have another easy solution to this: I need to create calendars where the start of the week is Monday, not Sunday. Could you envisage adding an option for this?

Currently there isn't a way to do this, but I'm open to adding one! Maybe we could add a startWeekDay option that accepts a value of 0 (sunday) to 6 (saturday), and then lays out the different views accordingly 🤔

Currently there isn't a way to do this, but I'm open to adding one! Maybe we could add a startWeekDay option that accepts a value of 0 (sunday) to 6 (saturday), and then lays out the different views accordingly 🤔


User Friendly Relative Boomerang

Summary

users can now use boomerang to go x inches forward, x inches forward and turn, or the classic coordinates and theta
Motivation

This would help a lot of teams also since it is difficult to visualize coordinates sometimes.

Download the template for this pull request:

[!NOTE]
This is auto generated from Add Template to Pull Request

via manual download<EMAIL_ADDRESS>via PROS Integrated Terminal:

curl -o<EMAIL_ADDRESS>https://nightly.link/LemLib/LemLib/actions/artifacts/1142042448.zip;
pros c fetch<EMAIL_ADDRESS>pros c apply<EMAIL_ADDRESS>rm<EMAIL_ADDRESS>

superceded by #134


Clone: learn to clone terms, control which variables are cloned, replace renamer

Well, this got a little out of hand.
To begin with I wanted to extend Clone to handle terms, and also to handle the various cases of renaming free, bound, or both kinds of variables. This led to the Cloneable class, and a fairly clear implementation.
Roman observed that the logic had become very similar to the renamer's logic. The only difference was that the renamer handled scopes too. This was fairly easy to add, and the resulting code works as a replacement for the renamer.
I think this is worth it overall:

The code is comparable (and IMO slightly clearer, but I'm biased).
We have a single piece of code that handles all kinds of renaming.
The interface is now just in MonadQuote, whereas the old renamer required you to thread through the parser's state.

Notes:

There is some noise in the diff for tests, since we don't allocate exactly the same uniques to things as we did.
At this point perhaps we should rename Clone to Renamer and Renamer to Annotator, but I think this is enough for now.
I noticed that not everywhere was doing global renaming after parsing, which seems like a latent bug, so I fixed that.

I'm -1 on this. It seems to accomplish what we already had, with the benefit of one function for cloneType and globalRename, but the design is overwrought and it's now less clear what's going on.

I think having one function is quite a significant benefit - otherwise we're duplicating a lot of logic.

Additionally, I'd like to see how this pull request affects benchmarks. Since this branch is not pushed to the main repo, I cannot run them locally, but you should be able to report numbers against master.

Sure, I'll have a look.
 If we want to revisit scope handling we can do it later.

@effectfully I can't find your comment now, but does my comment about the mappings being singletons answer your question? TLDR: yes, except for free variables.

@effectfully I can't find your comment now, but does my comment about the mappings being singletons answer your question? TLDR: yes, except for free variables.

Yeah, for some reason GitHub hadn't updated comments and so I wrote my comment without seeing yours. Yes, thank you, it makes sense to me.


Replace ASP.NET 2.0 tokens

Thank you for me involving me here.  I have a concern here is there by chance I could interfere or reconfigure some way as to make any concerns to another by way of lacking knowledge on my part. this is in the back of my mind.


Responsive page (document) titles with dynamic data! Fixes issue #333

Work in progress, just putting it online for feedback! Related to issue #333

Explaining some of my rationale

Adding titles in routes.js feels natural (having them all in one place vs. some other document mapping routes to names elsewhere)

But then I wrote a whole thing in locales/en.json5 to come up with names
Currently... my new translations are broken and just coming through as "project.Overview | My Project Name | ODK Central"

I made ‘title’ a function in meta

Mainly because I saw one example online of passing the route into it
I considered passing the vuex store in, but then imported it directly.

Adding afterEach functionality to the router to set document.title is what many other people do (sometimes people use beforeEach instead)
Sometimes we already have all the information we need

Static title fully stored in the route
Project or form name from vuex

Sometimes we don’t… the router has a way of watching vuex store for changes for some other purposes (validateData)

So in a similar way, I use the route’s meta field to watch for changes to a particular store key

If the title is supposed to use delayed information… don’t think too hard about an alternate title (e.g. "Project Overview" instead of "Project Name")
Page title gets updated when locale changes
Parts of titles are generated as an array and joined with I, e.g. "Form Access | My Project Name | ODK Central" (all have ODK Central at the end)

Can change this general formatting in src/util/router.js

Nothing has a test yet

If there's anything weird about my javascript that I can improve, please let me know!
If people have thoughts about how to be more consistent with titles (either how they look (patterns, breadcrumb kinda things, how many nesting layers), or where they live in the code, especially with respect to translations) let's discuss!

Very excited to see this! This definitely looks like it's going in the right direction.

Adding titles in routes.js feels natural

That sounds right to me!

But then I wrote a whole thing in locales/en.json5 to come up with names

That makes sense to me to add these messages to en.json5. Since routes.js is outside a component, you can't use a single file component i18n custom block, which means the messages have to live in en.json5.

Currently... my new translations are broken and just coming through as "project.Overview | My Project Name | ODK Central"

I mentioned this over Slack, but I think the message path just needs the title. prefix.

Adding afterEach functionality to the router to set document.title is what many other people do (sometimes people use beforeEach instead)

afterEach() makes sense to me, since after beforeEach() is called, there may still be a redirect, or the navigation may be canceled. And in Frontend, navigation is synchronous after the initial navigation, so beforeEach() and afterEach() will be called in the same tick anyway.

I made ‘title’ a function in meta

Mainly because I saw one example online of passing the route into it
I considered passing the vuex store in, but then imported it directly.

If you pass the store to updateDocumentTitle(), it could pass store.state.request.data to the title function, which could destructure it:
title: ({ project }) => [
  i18n.t('title.project.overview'),
  project != null ? project : project.name
]

Just a thought! Also, at some point soon, we'll be able to use ?. rather than a ternary.

Sometimes we don’t… the router has a way of watching vuex store for changes for some other purposes (validateData)

So in a similar way, I use the route’s meta field to watch for changes to a particular store key

Perfect! I think it makes a lot to sense to use that pattern here.

If the title is supposed to use delayed information… don’t think too hard about an alternate title (e.g. "Project Overview" instead of "Project Name")

I think right now, if you're on the project overview page, but haven't received the project yet, the title function will return ['Overview', null], and updateDocumentTitle() will set the title to Overview |  | ODK Central. Not sure how best to address that case... One option is that updateDocumentTitle() could filter out null before joining. Alternatively, updateDocumentTitle() could check whether data exists for the request key specified to delayedData, and if not, skip calling the title function and simply set the title to ODK Central. Or maybe there's a third option. 🤔
Speaking of delayedData, it'd be amazing if delayedData and title could be combined somehow, since delayedData only relates to title and not other things waiting for data (like validateData). Maybe title could be an array that combines the request key and the title function?
title: [
  'project',
  () => [i18n.t('title.project.overview'), getResourceNameFromStore('project', store)]
]

By the way, not all resources have a name property. For example, a user has a displayName property. Also, I believe the name property of a form is optional. AuditRow contains some logic that I think is related (though I'm not sure it could be reused):
https://github.com/getodk/central-frontend/blob/7791afbd75726357599efc34c6640586c554bddb/src/components/audit/row.vue#L58-L81

Page title gets updated when locale changes

Awesome! 👏

If people have thoughts about how to be more consistent with titles (either how they look (patterns, breadcrumb kinda things, how many nesting layers)

I think the current pattern you're using is great. You show a single resource name even for nested resources, which I think makes sense and helps ensure the title isn't too long. @lognaturel, it'd be great to get your thoughts as well, since you made a related comment on the issue.

This is great! 🎉
First, the world's tiniest thing that we can ignore -- I noticed while using Spotify that · seems to be the more modern equivalent to |. You'll see it on Github as well. I like | but I have to say that it's giving me 90s vibes. 😄
I still agree with my prior comment that for project-level things the static part is most helpful (App Users, Roles, etc). It's probably simplest to make that pattern consistent but I do feel a bit sad that those of us who run with a lot of tabs won't see the dynamic part at a glance.
A common state I end up in is having two forms open on their overview page as I'm updating drafts in parallel (e.g. baseline/followup). Would it be crazy to have a special case for both project and form overviews that drop the "Overview |" prefix and just show the form/project name? Similarly, once the submission page is up, it'd be great for that to show the instance name (won't be so fun if it's a uuid but still more helpful than leading with Overview, I think).

A common state I end up in is having two forms open on their overview page as I'm updating drafts in parallel (e.g. baseline/followup). Would it be crazy to have a special case for both project and form overviews that drop the "Overview |" prefix and just show the form/project name? Similarly, once the submission page is up, it'd be great for that to show the instance name (won't be so fun if it's a uuid but still more helpful than leading with Overview, I think).

Check it out @lognaturel, I've removed the "Overview" part of these root project and form pages so it will say:
My Project | ODK Central
Project Roles | My Project | ODK Central

My Form | ODK Central
Submissions | My Form | ODK Central

It's very easy to add as many or as few of these chunks between the pipes as you want!
I might have gone overboard on the system management tab names: (should they say something else?)
Server Audit Logs | System | ODK Central
Backups | System | ODK Central

I've removed the "Overview" part of these root project and form pages

That makes a lot of sense to me! I didn't look at the implementation -- it's not crazy to have different rules for each page type? Does that mean each page type defines its own title rules? I don't have enough context to have strong feelings about this but just flagging that there are options about where redundancy is captured.

I might have gone overboard on the system management tab names: (should they say something else?)

This I don't have any strong feelings on either. The important thing to me is that the differentiating part is on the left. "System" doesn't add much to me but I also don't feel like it matters. Seems reasonable to leave in case we end up having project-only subsets of the same data at some point, for example.

That makes a lot of sense to me! I didn't look at the implementation -- it's not crazy to have different rules for each page type? Does that mean each page type defines its own title rules? I don't have enough context to have strong feelings about this but just flagging that there are options about where redundancy is captured.

There's not really a more standardized or centralized place to pull page titles from, so yes, there's basically a custom rule for each route. It's in the src/routes.js file, which is where other people put their static page titles. We've just got functions instead (that @matthew-white and I have tried to make as concise as possible) that account for translations and fields that may or may not be present yet on various objects.
Each route has its own function for building an array of title "parts", which can be as simple as ["Log In"] (but with i18n also thrown in there) or more complicated like ["App Users", project.name]. This array is then combined with the standard ["ODK Central"] and everything is joined with the separator.

I mentioned this a little earlier today, but I just merged a couple of PRs that I think are relevant to this PR:

#429 adds a new route (the submission detail page).
#430 defines a utility function that takes a submission and returns either its instance name or its instance ID.

I'm feeling good about the state of this PR!

There are tests for every route (as I was moving translation strings around, I temporarily broke route titles, so decided they should all be tested)
There is a test for changing the location through the dropdown and having the title update right then
Translation strings are more centralized in src/locales/en.json5:

I used existing strings from resource. or action. where I could
I moved certain strings out of components, but they are named after their components (e.g. formHead for src/components/form/head.vue)
Everything that was a "tab" is still a "tab" and has the tab transifex comment
I added a few other transifex comments

User display name is shown when editing that user
Submission UUID is shown when viewing that submission


Update test to fix failing build

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

noarch: python recipes are recommended to have a lower bound on the python version. This recommendation will become a requirement in the future.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

noarch: python recipes are recommended to have a lower bound on the python version. This recommendation will become a requirement in the future.

So please address the lint, probably changing python to python >=3.6. We usually wait about a week or so to merge these kinds of PRs in the hope that a maintainer gets to it. If you'd like to add yourself to the maintenance team, add your GitHub username in the recipe!

So please address the lint, probably changing python to python >=3.6. We usually wait about a week or so to merge these kinds of PRs in the hope that a maintainer gets to it. If you'd like to add yourself to the maintenance team, add your GitHub username in the recipe!

Ahhh looks like you already added yourself! Great!
Bump core here in a week or so if this is not merged.
@conda-forge/xlrd please review and merge!

Ahhh looks like you already added yourself! Great!
Bump core here in a week or so if this is not merged.
@conda-forge/xlrd please review and merge!

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge/core: the original maintainers appear to be silent. Could someone approve this PR? I have new releases of 2 other feedstocks (mjhoptics/opticalglass-feedstock and mjhoptics/rayoptics-feedstock) blocked by this. Thank you!

@conda-forge/core: the original maintainers appear to be silent. Could someone approve this PR? I have new releases of 2 other feedstocks (mjhoptics/opticalglass-feedstock and mjhoptics/rayoptics-feedstock) blocked by this. Thank you!


Create HW.sys

Thank you @goosvorbook for your PR. I merged it with our prior hw yaml and fixed it up. Appreciate the add!


Pip install?

Add a setup.py file to make it so you can pip install wit and use it directly from python. It will also add a wit executable to your local python environment.
Had to nest the setup.py within lib though to keep the existing directory structure, so I added docs on how to refer to it from pip or equivalently in requirements.txt.

Thanks for this,
Could you talk a little about the following points

The README.md moved to lib (also please use git mv when doing so, makes the diff cleaner)
./lib/bin/wit is implemented differently from ./wit

Hrm, tried to git mv, but I think because I created the symlink it blew out the changes. These are the changes to the README:

Typo fix:

before: Wit is a tool for managing workspaces...
after: Wake is a tool for managing workspaces...

Pip explanation:

Installation with pip
Wit is not currently registered with pypi, however it can be installed directly from Github using pip:
pip install -U git+https://github.com/sifive/wit@master#egg=wit&subdirectory=lib

This will also place a wit executable in your python (virtual) environment’s bin directory, which you may need to add to your shell’s $PATH.
This url scheme can be used to point at a specific commit hash. Note that the source code is located in ./lib, so the subdirectory must be specified in the url. Showing each part of the url more explicitly:
package_name='wit
commit_hash='master'
source_url='https://github.com/sifive'
source_name='https://github.com/sifive/wit'
relative_src_dir='lib'
pip install -U 'git+'"$source_url"'@'"$commit_hash"'#egg='"$package_name"'&subdirectory='"$relative_source_dir"

I feel like there is a way for setup.py to point to a package that is not immediately adjacent to it, but I couldn't figure it out from the docs, but I've used this trick in other repos where I've needed to nest python packages.
I went ahead and added the exec to my version of the wit wrapper script in ./lib/bin/ to give it the same no-forking behavior, but since it's going to be installed into a virtual environment, the PYTHONPATH shouldn't be messed with there since PYTHONPATH should point at the virtualenv. However, calling from the top like in ./wit, ensuring the right PYTHONPATH makes sense I think.

The README.md moved to lib (also please use git mv when doing so, makes the diff cleaner)

git mv isn't actually a first class operation within the git internals, and it's actually no different than git rm and git add; detection of a move is done post hoc and heuristically by diffing tools, and because you've modified the README enough, GitHub isn't detecting it as a move. See https://git.wiki.kernel.org/index.php/GitFaq#Why_does_Git_not_.22track.22_renames.3F if you care about the details.

Closing, since #220 has done this and is now merged in.


Backport: Etcd Snapshots fail to create in airgap setup with private registry

Backport https://github.com/rancher/rancher/issues/21627

https://github.com/rancher/rancher/issues/21627#issuecomment-513044252

the following tests are done from v2.2.4 -> v2.2.5 -> v2.2.6-rc1:

in the air-gapped environment, run Rancher:v2.2.4 single-installed
add a single node custom cluster
the initial recursive etcd snapshot is trigged and saved successes
add a snapshot manually and it succeeds
upgrade to Rancher:v2.2.5
add a snapshot manually and it FAILS

[ERROR] EtcdBackupController c-2qsb8/c-2qsb8-ml-8xq7j [etcdbackup-controller] failed with : [etcd-backup] failed to perform etcd backup: Can't pull Docker image [rancher/rke-tools:v0.1.34] for host [<IP_ADDRESS>]: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

upgrade to Rancher:v2.2.6-rc1
add a snapshot manually and it succeeds

2019/07/19 00:00:10 [INFO] [etcd] Successfully pulled image [ec2-13-57-194-224.us-west-1.compute.amazonaws.com:443/rancher/rke-tools:v0.1.34] on host [<IP_ADDRESS>]

add a new cluster
the initial recursive etcd snapshot is trigged and saved successes
deploy some workloads
add a snapshot manually and it succeeds
restore the cluster from the first snapshot and it succeeds

v2.2.5 fresh install -> v2.2.6-rc1 Airgap w/ private registry:

Create custom cluster w/ recurring snapshots enabled at 1 hour interval
Initial snapshot fails and is stuck in activating
Create custom cluster w/ recurring snapshots disabled
Manually create snapshot
Snapshot fails
wait 1+ hr
Upgrade to v2.2.6-rc1
After some short period, recurring snapshot succeeded for first cluster
Manual snapshot succeeds for first cluster
Manual snapshot succeeds for second cluster


WIP - Building Block Proposal - Authorization Access Control

While working with software, one of the most common issues that pops-up is "Authorization". After a user is authenticated, how do we know that this user has access to a specific piece in your code? For this, developers typically reside towards implementing:

RBAC (Role-based Access Systems)
ABAC (Attribute-Based Access System)

The above is often considered a lengthy task, as users have to ensure that everything works as intended and test it carefully. A leak in this piece of code could have serious consequences.
Dapr runs as a sidecar architecture, typically close to the software. This software often interacts with users (Backend API) or as microservices doing an isolated piece of code.
Therefore, I would love to propose a new Building Block: "Gatekeeper", where a user can simply call it through one of the Dapr SDKs and receive a response if they are allowed to access a certain feature or not.
Endpoint
/v1.0/gatekeeper

Example Configuration
apiVersion: dapr.io/v1alpha1
resourcePolicy:
  version: "default"
  resource: user
  rules:
    # Admins can do anything
    - actions: ["*"]
      effect: EFFECT_ALLOW
      roles:
        - admin

    # Users can read their own info
    - actions: ["read", "list"]
      effect: EFFECT_ALLOW
      roles:
        - owner
      condition:
        match:
          expr: ("userId" eq request.principal.id)

Example HTTP Call
URL: /v1.0/gatekeeper/check
Data:
{
    // Who is acting? (comes from Identity Provider)
    principal: {
        id: "my-user",
        roles: ["user"]
    },
    // Which resources are we accessing?
    resources: [
        resource: {
            kind: "user",

        },
        actions: ["read", "create"]
    ]
}

💡This is still a work in progress, but already sharing a first view to see if there is any interest

Examples:

https://cerbos.dev (heavily inspired upon)

I like the proposal. Is there a way to make this dynamic so we don't require users to change a CRD? Maybe reading from a database, like we do for configuration building block?

I like that idea @artursouza! Might be nice to support "state stores" as components that persist the rules

Another source for inspiration, which is very powerful and flexible (although perhaps complex), could be Zanzibar: https://research.google/pubs/pub48190/
One implementation is in Ory Keto: https://www.ory.sh/docs/keto/

Thank you @ItalyPaleAle! Added the resources already to post itself. Working on a graphic as well to explain in more detail how we could incorporate @artursouza's comment as well. Current way of thinking is to store policies in a state store building block which can be configured.

Related request https://github.com/dapr/dapr/issues/5094

See also openFGA, authZed etc. many zanzibars are rolling out.

https://youtu.be/NVO3PUyEpkM is about authorization at Netflix. The key point is that their authorization servers are remote (as are Zanzibar derived ones). Since they are remote they can be unreachable so the client has a set of fallback rules to use in the meantime. That is a great spot for DAPR to fit in

Added extra information on how the Gatekeeper service could work! Really interested to see this become a reality and view everyone's opinion


docs: Change docs link

We moved the HTML docs to brainiak.org because pythonhosted.org does not
accept uploads anymore. See:
https://github.com/pypa/pypi-legacy/issues/672

Build triggered. sha1 is merged.

Build triggered. sha1 is merged.

Build started sha1 is merged.

Build started sha1 is merged.

Build finished.

Build finished.


Example: xclock_utc.rs not working with latest Polling

It breaks in multiple ways but the one that I can't seem to solve is: poller.delete(conn.stream()).ok();
This fails as poller.delete expects impl AsSource instead of impl AsRawSource.
Is there a way to solve that one?

This seems to work.
unsafe {
        poller.add(conn.stream(), PollingEvent::readable(1))?;
        // Remove it if we time out.
        let _guard = CallOnDrop(|| {
            poller
                .delete(BorrowedFd::borrow_raw(conn.stream().as_raw_fd()))
                .ok();
        });
    };

This fails as poller.delete expects impl AsSource instead of impl AsRawSource.

I didn't hit that problem. For me, the following works with polling 3.2.0:
diff --git a/x11rb/examples/xclock_utc.rs b/x11rb/examples/xclock_utc.rs
index 48ac62f0..7e18cca0 100644
--- a/x11rb/examples/xclock_utc.rs
+++ b/x11rb/examples/xclock_utc.rs
@@ -1,6 +1,6 @@
 use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH};

-use polling::{Event as PollingEvent, Poller};
+use polling::{Event as PollingEvent, Events as PollingEvents, Poller};

 use x11rb::atom_manager;
 use x11rb::connection::Connection;
@@ -173,7 +173,8 @@ fn poll_with_timeout(
     timeout: Duration,
 ) -> Result<(), Box<dyn std::error::Error>> {
     // Add interest in the connection's stream.
-    poller.add(conn.stream(), PollingEvent::readable(1))?;
+    let key = 1;
+    unsafe { poller.add(conn.stream(), PollingEvent::readable(key))? };

     // Remove it if we time out.
     let _guard = CallOnDrop(|| {
@@ -181,14 +182,14 @@ fn poll_with_timeout(
     });

     // Wait for events.
-    let mut event = Vec::with_capacity(1);
+    let mut events = PollingEvents::with_capacity(1.try_into().unwrap());
     let target = Instant::now() + timeout;
     loop {
         let remaining = target.saturating_duration_since(Instant::now());
-        poller.wait(&mut event, Some(remaining))?;
+        poller.wait(&mut events, Some(remaining))?;

         // If we received an event, we're done.
-        if event.contains(&PollingEvent::readable(1)) {
+        if events.iter().any(|ev| ev.key == key && ev.readable) {
             return Ok(());
         }

what's going on in the CallOnDrop there?
It's supposed to be:
let _guard = CallOnDrop(|| {
        poller.delete(conn.stream()).ok();
    });

which is what fails.

Might not be important so will close it as I can't bring much more on the table on the subject atm.
Thanks though:)


Events in updated not triggering dom or v-model update

Vue.js version
Most recent
Reproduction Link
https://jsfiddle.net/mo48q36L/
Each custom select element has a togglable option to represent an option that might change in real-world conditions. I want to prevent the value in vue and the value in the select element from being out of sync.
To do this, I compare the value of the select element and the value in vue in the updated lifecycle hook. If they're not equal, that means that the corresponding option no longer exists, so I want to simply set the value of both to be null.
Steps to reproduce
Click the "Toggle option" buttons below each custom select element, which will remove the currently selected element.
The top element (custom-select) does emit the null value, but the dom isn't updated until something else triggers a dom update. If vue devtools worked on jsfiddle, you would also be able to notice that the corresponding data value in the parent component is immediately updated after emitting null, but the value prop in the child component is not updated until the dom updates.
The bottom element (custom-select-next-tick) emits the null value in $nextTick, and the dom is updated in the next tick as it should be.
What is Expected?
I expect that emitting a new value in updated should trigger a new dom update.
The docs suggest that the dom will be updated by manipulating state in updated: https://vuejs.org/v2/api/#updated
What is actually happening?
Emitting a new value in updated is not triggering a dom update or v-model value change unless it's wrapped in $nextTick.
Thank you!

Changing data in updated is, sadly, very hairy behavior and implementation specific. I would recommend using $nextTick to hint Vue schedule or just updating dom manually.
The problem here is that Vue schedules data changes and watchers internally, and after every watcher has run, updated hook will get called. So your data change gets no chance to be captured or executed.  When wrapped in $nextTick, the change is scheduled in next update queue.
The doc correctly warns against changing state, but the reason might be misleading.
@chrisvfritz Any idea?

@HerringtonDarkholme Unless I'm misunderstanding the use case, I don't think I'd even use $nextTick here - just computed properties or watchers. An advantage is the select will be updated even if no other DOM updates would have been made (e.g. if the togglable option were removed by a state change not was not initiated by the current user). I just updated the doc to make this clearer.

Sorry, computed properties or watchers for which part?
I want to make the validity check after any dom changes, so that's why I used updated. If I instead use a watcher for the value prop, will that take into account any dom changes that take place in the same tick?
I don't think I can use a computed property, because I want to be sure to emit the corrected/verified value back to the parent component as immediately as possible.

If I use a computed property for value instead, the component will still rerender after I emit the updated value, right? So in that case I don't see the advantage of using a computed property.
Please disregard my third paragraph in the above comment, it doesn't make any sense.

I mean something like this. Notice I have the watcher in the parent component, rather than the custom input. Using the updated hook for this doesn't just trigger a second render cycle - it makes your application more brittle, since that parent component is no longer the sole source of truth.
For example, if you changed the parent component to be passed dynamic props instead of assigning initial data, there'd be a chance your select could start with an invalid state. Also, the select would need to be rendered at all times for the value in the parent to be updated properly.

Oh I see. You're right, that is better. Thanks!


updated data for japan

hi
i have added the data
Closes#4

i have updated
Closes#24

Please send across a new PR as this branch has been deleted.
And do not close the PR and wait for my reply. I will do that after merging it.


Added timeoutInSeconds property for state.mysql

Add docs for the new metadata property added in https://github.com/dapr/components-contrib/pull/2241

LGTM


@JuliaRegistrator register

@JuliaRegistrator register

@JuliaRegistrator register

Error while trying to register: Register Failed
@frankier, it looks like you are not a publicly listed member/owner in the parent organization (JuliaPsychometricsBazzar).
If you are a member/owner, you will need to change your membership to public. See GitHub Help

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/78561
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.0 -m "<description of version>" 47208a3f1ad791680193ac2c1569c0e3c2e0fc88
git push origin v0.1.0

@JuliaRegistrator register

Registration pull request updated: JuliaRegistries/General/78561
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.0 -m "<description of version>" 400e90c2068b50d79c57145269aa5f64bc463e2f
git push origin v0.1.0

@JuliaRegistrator register

Registration pull request updated: JuliaRegistries/General/78561
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.0 -m "<description of version>" 60d329f2ce2a15757e9061105e83c81cc2556ef4
git push origin v0.1.0

@JuliaRegistrator register

Registration pull request updated: JuliaRegistries/General/78561
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.0 -m "<description of version>" d5922bd94bd3bd539ec82a8a569c8ae7edadb40c
git push origin v0.1.0

@JuliaRegistrator register

Error while trying to register: "Tag with name v0.2.0 already exists and points to a different commit"

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/84909
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.3.0 -m "<description of version>" b1b3bc24b627f6c052f488e5f240f405bef22f3a
git push origin v0.3.0

Also, note the warning: This looks like a new registration that registers version 0.3.0.
Ideally, you should register an initial release with 0.0.1, 0.1.0 or 1.0.0 version numbers
This can be safely ignored. However, if you want to fix this you can do so. Call register() again after making the fix. This will update the Pull request.

@JuliaRegistrator register

Registration pull request updated: JuliaRegistries/General/84909
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.3.0 -m "<description of version>" 03dc5c249399e6b57c025938cd967f2e287acb47
git push origin v0.3.0

Also, note the warning: This looks like a new registration that registers version 0.3.0.
Ideally, you should register an initial release with 0.0.1, 0.1.0 or 1.0.0 version numbers
This can be safely ignored. However, if you want to fix this you can do so. Call register() again after making the fix. This will update the Pull request.

@JuliaRegistrator register

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/85561
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.4.0 -m "<description of version>" 9b8a36ffb0e8a11d2d2cf07058f8f17ce7a45e16
git push origin v0.4.0

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/88771
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.5.0 -m "<description of version>" 0ae78af879ae2c02bbb102aa392eca7d16700fc5
git push origin v0.5.0

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/89424
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.6.0 -m "<description of version>" d171826c35fcb53edad94650c437e7a24485cbc6
git push origin v0.6.0


Dockerized version

Just wanted to let you know that I dockerized this in https://github.com/xaviervia/docker-pokemonsay . It was the simplest way of having it working in any *nix .

Very nice. I couldn't manage to install docker to try it. It seems a 64 bit OS is needed. Nonetheless, I liked it very much. :+1:

I also wrote about it on the README.md in the Install section. So people have one more option for installing it.
Thanks buddy.

Thank you for making this ;)


Expansion of the cell toolbar to show all available actions as icons.

The text cell toolbar currently shows only 5 icons and the icon to display the menu with additional actions.

Something similar happens with the toolbar of the code cells that in this case only show 4 icons and the icon to display the menu with the additional actions.

I find that in my daily use of ADS it would be much more practical for both toolbars to show icons for all available actions.
Perhaps it might be appropriate that the number of icons to display in the toolbar could be configurable.
Regards,
Claudio

Thanks, Lucy.


Build failure: gotosocial NixOS tests

Steps To Reproduce
Steps to reproduce the behavior:
$ nix run '.#nixosTests.gotosocial.driver'

Build log
machine # Connection to localhost (<IP_ADDRESS>) 8081 port [tcp/sunproxyadmin] succeeded!
(finished: waiting for TCP port 8081 on localhost, in 10.31 seconds)
machine: must succeed: curl -sS -f http://localhost:8081/nodeinfo/2.0 | jq '.usage.users.total' | grep -q '^0$'
machine # [   18.020403] gotosocial[895]: timestamp="05/11/2024 19:43:57.095" func=server.init.func1.Logger.13.1 level=INFO latency="2.479365ms" userAgent=curl/8.10.1 method=GET statusCode=200 path=/nodeinfo/2.0 clientIP=<IP_ADDRESS> requestID=mkrdnzcj04000660k0j0 msg="OK: wrote 222B"
(finished: must succeed: curl -sS -f http://localhost:8081/nodeinfo/2.0 | jq '.usage.users.total' | grep -q '^0$', in 0.03 seconds)
machine: must succeed: gotosocial-admin account create --username nickname --email<EMAIL_ADDRESS>--password kurtz575VPeBgjVm
machine # [   18.046857] systemd[1]: Starting /nix/store/lxmp31j6rw54dzvx9qbyhqz63w8ad9ss-gotosocial-0.17.0/bin/gotosocial --config-path /nix/store/15ygiwfqvdvs73wckss6f876151v268q-config.yml admin account create --username nickname --email<EMAIL_ADDRESS>--password kurtz575VPeBgjVm...
machine # [   18.066386] systemd[1]: Started /nix/store/lxmp31j6rw54dzvx9qbyhqz63w8ad9ss-gotosocial-0.17.0/bin/gotosocial --config-path /nix/store/15ygiwfqvdvs73wckss6f876151v268q-config.yml admin account create --username nickname --email<EMAIL_ADDRESS>--password kurtz575VPeBgjVm.
machine # [   18.271955] systemd[1]: gotosocial-admin.service: Deactivated successfully.
(finished: must succeed: gotosocial-admin account create --username nickname --email<EMAIL_ADDRESS>--password kurtz575VPeBgjVm, in 0.26 seconds)
machine: must succeed: curl -sS -f http://localhost:8081/nodeinfo/2.0 | jq '.usage.users.total' | grep -q '^1$'
machine # [   18.300332] gotosocial[895]: timestamp="05/11/2024 19:43:57.375" func=server.init.func1.Logger.13.1 level=INFO latency="68.724µs" userAgent=curl/8.10.1 method=GET statusCode=200 path=/nodeinfo/2.0 clientIP=<IP_ADDRESS> requestID=qzrxnzcj040005wae7vg msg="OK: wrote 222B"
machine: output:
cleanup
kill machine (pid 2443946)
qemu-kvm: terminating on signal 15 from pid 2435823 (/nix/store/901c80rlps5q05bnjk1sj4zaz5k736nc-python3-3.12.7/bin/python3.12)
kill vlan (pid 2443944)
(finished: cleanup, in 0.01 seconds)
Traceback (most recent call last):
  File "/nix/store/srymsadvv6spa497nadazbnlj1rfmj9f-nixos-test-driver-1.1/bin/.nixos-test-driver-wrapped", line 9, in <module>
    sys.exit(main())
             ^^^^^^
  File "/nix/store/srymsadvv6spa497nadazbnlj1rfmj9f-nixos-test-driver-1.1/lib/python3.12/site-packages/test_driver/__init__.py", line 146, in main
    driver.run_tests()
  File "/nix/store/srymsadvv6spa497nadazbnlj1rfmj9f-nixos-test-driver-1.1/lib/python3.12/site-packages/test_driver/driver.py", line 175, in run_tests
    self.test_script()
  File "/nix/store/srymsadvv6spa497nadazbnlj1rfmj9f-nixos-test-driver-1.1/lib/python3.12/site-packages/test_driver/driver.py", line 167, in test_script
    exec(self.tests, symbols, None)
  File "<string>", line 8, in <module>
  File "/nix/store/srymsadvv6spa497nadazbnlj1rfmj9f-nixos-test-driver-1.1/lib/python3.12/site-packages/test_driver/machine.py", line 611, in succeed
    raise Exception(f"command `{command}` failed (exit code {status})")
Exception: command `curl -sS -f http://localhost:8081/nodeinfo/2.0 | jq '.usage.users.total' | grep -q '^1$'` failed (exit code 1)

The test shows that the admin user was never created:
$ nix run '.#nixosTests.gotosocial.driverInteractive'
>>> start_all()
>>> run_tests()
>>> machine.execute("curl -sS -f http://localhost:8081/nodeinfo/2.0 | jq -c '.'")
machine # [   90.753716] gotosocial[868]: timestamp="04/11/2024 14:14:39.775" func=server.init.func1.Logger.13.1 level=INFO latency="64.534µs" userAgent=curl/8.9.1 method=GET statusCode=200 path=/nodeinfo/2.0 clientIP=<IP_ADDRESS> requestID=krdrfxwj04000sg75seg msg="OK: wrote 222B"
(0, '{"version":"2.0","software":{"name":"gotosocial","version":"0.17.0"},"protocols":["activitypub"],"services":{"inbound":[],"outbound":[]},"openRegistrations":false,"usage":{"users":{"total":0},"localPosts":0},"metadata":{}}\n')

Additional context
Related to: https://github.com/NixOS/nixpkgs/pull/352632. Encountered while attempting to update gotosocial to latest.
Notify maintainers

Metadata

Add a :+1: reaction to issues you find important.

Looks like the issue might be something in upstream gotosocial (need to confirm). With the latest nixos-unstable, the existing tests pass when rolling back to gotosocial 0.16.0 (and building with Golang 1.22). Going to go through the gotosocial changelog and see if anything jumps out, or if something else is going on.
From latest nixos-unstable, tests pass with the last version, but not latest version:
diff --git a/pkgs/servers/gotosocial/default.nix b/pkgs/servers/gotosocial/default.nix
index ef7646e9dd4a..aae1241660d3 100644
--- a/pkgs/servers/gotosocial/default.nix
+++ b/pkgs/servers/gotosocial/default.nix
@@ -2,28 +2,28 @@
   lib,
   fetchurl,
   fetchFromGitHub,
-  buildGoModule,
+  buildGo122Module,
   nixosTests,
 }:
 let
   owner = "superseriousbusiness";
   repo = "gotosocial";

-  version = "0.17.0";
+  version = "0.16.0";

   web-assets = fetchurl {
     url = "https://github.com/${owner}/${repo}/releases/download/v${version}/${repo}_${version}_web-assets.tar.gz";
-    hash = "sha256-ASqPIf98qdnkh3j72ifQN3mWnzNCTRcUegmrStvQ08Q=";
+    hash = "sha256-aZQpd5KvoZvXEMVzGbWrtGsc+P1JStjZ6U5mX6q7Vb0=";
   };
 in
-buildGoModule rec {
+buildGo122Module rec {
   inherit version;
   pname = repo;

   src = fetchFromGitHub {
     inherit owner repo;
     rev = "refs/tags/v${version}";
-    hash = "sha256-uyqP3zhjcXKejGFAwZoTn2kY8IpX0QAAXNzb1VG6ve8=";
+    hash = "sha256-QoG09+jmq5e5vxDVtkhY35098W/9B1HsYTuUnz43LV4=";
   };

   vendorHash = null;


SVM: Move sysvar_cache related functions and tests to SVM

Problem
sysvar_cache handler functions solely depend on TransactionBatchProcessor::sysvar_cache. These can be moved out of bank to SVM.
Summary of Changes
Moved the function to TransactionBatchProcessor for now. Also updated the unit tests.
Fixes #

Fixes https://github.com/anza-xyz/agave/issues/396

Codecov Report
Attention: Patch coverage is 99.15254% with 1 lines in your changes are missing coverage. Please review.

Project coverage is 81.9%. Comparing base (e9cc9f8) to head (3a6332c).
Report is 2 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff            @@
##           master     #402    +/-   ##
========================================
  Coverage    81.9%    81.9%
========================================
  Files         840      840
  Lines      227913   228008    +95
========================================
+ Hits       186672   186788   +116
+ Misses      41241    41220    -21


Wasserstein disctance for multivariate distributions

Dear package maintainers,
May I please ask a question?
Is there a way to get the following working?
In words: applying wasserstein for multivariate distributions.
using KernelFunctions
using ExactOptimalTransport
mu = discretemeasure(RowVecs(rand(7,3)))
nu = discretemeasure(RowVecs(rand(7,3)))
wasserstein(mu,nu)

This throws an error.
Many thanks!
Ignace

Hi @ignace-computing ,
You seem to be wanting to solve discrete transport between multivariate empirical distributions, and it seems like wasserstein doesn't support that. I haven't got time to investigate in detail yet but my guess is that wasserstein only works for parametric distributions.
perhaps try out emd/emd2? these work for general discrete inputs and would require you to explicitly pass a cost matrix together with weights (in your case, uniform).


Question: Why can frowning face emoji can be rendered

Hey, great App and thanks for your efforts !
I'm doing some investigations how frowning face ☹ emoji can be displayed without using NotoColorEmoji font from GoogleFonts. I checked your app and could see that it renders the emoji correctly. My app and other Flutter apps can't render it correctly, so I looked into your code to find out how you did it. I wasn't able to figure it out, so I wonder if you knew why.
I would appreciate your help.
Thank you!

That is certainly an unusual question.
It would help to provide a bit more detail on this. You're not really making clear what not rendering "correctly" means in this context. Additionally, where are you seeing that specific emoji? In a Hacker News story? In a comment? Are you typing it yourself in a search field, or in a text field somewhere else? Screenshots welcome.
Does anything change if you select a different font on the settings page?
If you're looking to compare this app's font usage to other's, consider looking at the following:

The font definition in the pubspec.yaml
The call to GoogleFonts to retrieve the TextTheme
The Flutter version used (Glider typically updates to the latest beta version ASAP)

Thanks for your comment 🙇
I'm creator of the FlutterEmojiPicker package and I'm investigating how to display some emoji correctly, like frowning face.
I checked other flutter apps and noticed that all of them aren't able to display it directly without using a custom emoji font. So far, me and other contributor assuming that flutter can't access the native fonts for some reason. Only yours was able to display it in search bar for unknown reasons 🤔
Glide

Regular flutter app

I also tried using the same notoSansTextTheme but  same issue.

Well, I did already list some ideas...
First one that I tried was the Flutter version, and indeed, that turns out to be the difference maker. Starting from 3.18, Flutter appears to render the offending emoji fully colorized.
I'm considering this case solved.

I didn't took Flutter version into consideration. But you were right, the issue is indeed solved by 3.18. Thank you very much and sorry for the inconvenience 🙇


Improve Active Page responsive UI

Description
In this PR will be fixed and improved the responsive UI of the Active Page based on 7 breakpoint

/rebase

/deploy-staging

/merge


TailwindCSS warning: warn - No utility classes were detected in your source files.

Hi,
Not sure if this is related to this plugin  or not but I'm getting the following warning when running npm run dev:
    ~/r/f/vite-01  on   main !1  npm run dev                                      1 ✘  took 18s   at 17:41:13 

><EMAIL_ADDRESS>dev
> vite

Port 5173 is in use, trying another one...

  VITE v4.1.4  ready in 464 ms

  ➜  Local:   http://<IP_ADDRESS>:5174/
  ➜  Network: use --host to expose
  ➜  press h to show help

warn - No utility classes were detected in your source files. If this is unexpected, double-check the `content` option in your Tailwind CSS configuration.
warn - https://tailwindcss.com/docs/content-configuration

    ~/r/f/vite-01  on   main !1 

vite.config.js:
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { TailwindCSSVitePlugin } from "tailwindcss-vite-plugin";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react(), TailwindCSSVitePlugin()],
});

tailwind.config.cjs:
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

If I remove TailwindCSSVitePlugin() from plugins the warning goes away.
I also tried to change the order of the plugins => made no difference.

I found that we only support tailwind.config.js currently.  So we can rename .cjs to .js and remove type:module in package.json as a workaround

will fix it later☺

@pgforefront  this should be fixed now~

Thanks @await-ovo, the warning is now gone!


seed

It would be nice to have an option to set the random number generator's seed. This allows for reproducibility.
If no seed is passed at rrwg.conf (for instace), then it should run as it does now.

seed for pseudo-random generator was added as an optional option to be added in rrwg.conf


Crash when scanning computer

Hi, the app crashes after a while when I click on scan computer, I could not find any logs to include here but found these in event viewer:
Faulting application name: RepoZ.exe, version: <IP_ADDRESS>, time stamp: 0x5e9df994
Faulting module name: ntdll.dll, version: 10.0.18362.778, time stamp: 0x3dcfaabb
Exception code: 0xc0000374
Fault offset: 0x000dfa1d
Faulting process id: 0x3624
Faulting application start time: 0x01d6278ddd791d82
Faulting application path: C:\Program Files\RepoZ\RepoZ.exe
Faulting module path: C:\WINDOWS\SYSTEM32\ntdll.dll
Report Id: 7b841bfc-315c-4ba3-803f-3e9f4690b697
Faulting package full name:
Faulting package-relative application ID:
================AND===============
Fault bucket<PHONE_NUMBER>693828737, type 1
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
P1: RepoZ.exe
P2: <IP_ADDRESS>
P3: 5e9df994
P4: StackHash_8ddd
P5: 10.0.18362.778
P6: 3dcfaabb
P7: c0000374
P8: PCH_A6_FROM_ntdll+0x000723CC
P9:
P10:
Attached files:
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER4D6F.tmp.dmp
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER506E.tmp.WERInternalMetadata.xml
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER509D.tmp.xml
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER50AB.tmp.csv
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER50DB.tmp.txt
These files may be available here:
\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_RepoZ.exe_9d54104b3b64ae7277e8f41ea862f6f58d823ae0_8a994293_ff832f67-36af-4dd8-a263-c279894cc56e
Analysis symbol:
Rechecking for solution: 0
Report Id: 7b841bfc-315c-4ba3-803f-3e9f4690b697
Report Status: 268435456
Hashed bucket: 8f58bb7a65700b8488c4c3dfe2af6881
Cab Guid: 0

I'm sorry mohas, but due to the lack of further information, I cannot do anything here.
I suspect an execution prevention in your case like an anti virus app. You could check if you find logs or quarantine info for RepoZ.exe and if you're feeling brave: Try to turn off your anti virus temporarily and re-run your test - not to solve the problem but to find out whether or not this is the case.

This is a real issue please don't close it yet. I don't think that I have an antivirus I've debugged it from source and debugger crashed so maybe an insufficient memory problem?

" ... so maybe an insufficient memory problem?"

What should I do about that?

I will work on it after doing my passed due projects :) I want to help with
some other features too
On Tue, May 19, 2020 at 3:47 PM Andreas Wäscher<EMAIL_ADDRESS>wrote:

" ... so maybe an insufficient memory problem?"
What should I do about that?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/awaescher/RepoZ/issues/104#issuecomment-630753898,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAN3RGA5QGH3ZCMPVJB6SFDRSJTFVANCNFSM4M55KBFA
.

Sounds great, thank you. Please feel free to reopen the issue once you can get your hands on.


The user of admin  failed to delete the image

In GitLab by @luotian-github on Nov 9, 2017, 10:24
If you are reporting a problem, please make sure the following information are provided:

Version of board (last git commit number) , docker engine and docker-compose.
Config files of board, you can get them by packaging "board.cfg" and files in the same directory, including subdirectory.
Log files, you can get them by package the /var/log/board/.
Other necessery information.

In GitLab by @luotian-github on Nov 8, 2019, 07:40
UI call the incorrect api to delete image

In GitLab by @sokril on Nov 8, 2019, 08:14
closed

In GitLab by @sokril on Nov 8, 2019, 08:14
assigned to @liyanq528


東京の法人の件、進める

[ ] Request form
[ ] Fix title
[ ] Ask in Slack
[ ] JIRA issued
[ ] Prepare with the organizer
[ ] Setting the goal
[ ] Slides
[ ] Movies preparation
[ ] The day!
[ ] PDF release in SlideShare
[ ] Publish the movie
[ ] Subtitle to the movide
[ ] Publish the blog

Details of request

登記事項証明書の獲得と、休眠の要件確認

取得完了
休眠は、税務だけみたい


WIP : implement self contained raftexample

resolves #2

cc @ahrtr can we have https://github.com/etcd-io/etcd/tree/b1df8c468fb672490341e2e49f573f9925019293/server/etcdserver/api/snap as a module on its own ?

cc @ahrtr can we have https://github.com/etcd-io/etcd/tree/b1df8c468fb672490341e2e49f573f9925019293/server/etcdserver/api/snap as a module on its own ?

I am afraid we don't have such plan.

closing this in favour of https://github.com/etcd-io/raft/pull/67


[Question] How to prevent templates for being rendered ?

Hey guys,
I'm developing a helm template and I came up with the need to prevent certain templates to be rendered if a given flag is set. Is it possible to achieve this ? If so, how ?
Ps: The only way I could think of is wrapping the whole template in a if statement. If the if is false, the whole template would be "skipped".

Yep! That's how we handled it for individual templates. At a higher level you can also conditionally enable or disable charts through requirements.yaml.

Thanks @bacongobbler !!! Just to clarify: What I have said about templates was *.yaml files inside the templates folder and not .tpl files. Does that still applies ?
Btw, a quick example of what I was saying:
# templates/foo.yaml
{{- if .Values.enable_template_foo }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  .
  .
  .
  .
{{- end }}

Yes :)

:tada: :tada: :tada: :tada:
Thanks !


Frontend: Adjust styling in Manage Permissions page (previously dashboard page)

Describe the task
Adjust styling for the Manage Permissions page (previously dashboard page) per improved design.
Acceptance Criteria

[x] Update referentes and naming from dashboard to manage permissions
[x] Adjust table style
[x] Adjust dropdown style
[x] Display an icon and text according to the improved design when no application is selected, like the picture below:

Private Zenhub Image
Additional context
Figma Design: https://www.figma.com/file/5BnF5T2ncoZVpSbCbj30Mr/FAM-mockups?type=design&node-id=1773-102878&mode=design&t=V8XSihxV8ArvRHmU-0

When looking at PR (#890) for this ticket, the design for the user-role table shows these columns with no data (see highlight in red):
Private Zenhub Image
These information (in red: "First name", "Last name", "Email") my understanding is from IDIM external search. Have we discussed and know in what strategy for how we obtain this information for the frontend (fetching externally for each user, caching, combinations, or else)?
We should have backend ready before showing these columns I think?
@OlgaLiber2 , @basilv  , @MCatherine1994

I think @MCatherine1994 will know what we are missing on the backend to be able to display this information.

I see the Figma design has lower case for ("User name", "First name", "Last name"). I see more common for using Upper case for the column header (all words: "User Name", "First Name", "Last Name"), should we use that?
@OlgaLiber2

Hi @J0taFerreira ,
As discussed in meeting, could you please remove/hide the columns ("First name", "Last name", "Email") for now and adjust column headers for Upper Case?
Thank you.


Change drop down menu to show correct formatting

Can you please post before and after screenshots in different screen widths?

Using Simplex theme from Bootswatch
https://bootswatch.com/simplex/
Before
No hover:

Hover outside text:

Hover on text:

Narrow screen:

After

I can't produce the same screenshots because of the bug mentioned at https://github.com/sahat/hackathon-starter/issues/853#issuecomment-475934766.  Do you mind sharing what you did to fix that issue?

In those specific screenshots, I use the Simplex theme from Bootswatch together with
.navbar-dark.bg-primary
instead of
.navbar-light
as the first line in header.pug. My complete first line is:
.navbar.fixed-top.navbar-expand-md.navbar-dark.bg-primary
In the default template used, the graphical error I have corrected does not show, because background colors are not used.
If you want to reproduce my screenshots above, I can propose supplementary changes. However, those supplementary changes is not needed in the master branch unless you alse want to change the theme.
Please tell me how you would like to proceed.

@jonasroslund
FYI: I've created #1014 and #1015 to fix both problems (rendering problems with navbar and switching custom themes from Bootswatch)

Thank you!


Query/Test: consider merging all Assert aggreagate methods (Min, Count ect) into one

We would need additional processing - basically extract the expression from the query analyze it and rewrite into async if we need it.
Also we wouldn't be testing the entry points to async methods, but the benefit is that we could greatly reduce the number of assert overloads

Just make sure to have all overloads so writing a valid test does not show compilation error due to missing overload.


no cursor in rename modal on Linux with Adobe Source Code Pro font

I'm not sure if this is the platform (ArchLinux) or the font (Source Code Pro) to blame, but this doesn't occur with the Atom Dark theme.
Steps to reproduce:

right-click on file in Tree View and then click Rename
click or use the arrow keys to re-position the cursor within the Rename modal dialog
notice that there is no indication of where the cursor is positioned

I'm using Atom 0.177.0, which has one-dark-ui 0.2.0 built-in.

Okay, now I'm confused. After switching the built-in themes back and forth to determine which themes are affected, I can now see the cursor. /shrug

Ha! Got it!
This is only reproducible for me when I have:

UI Theme: One Dark
Syntax Theme: Solarized Light

If I change either of those to something different, then I can see the cursor.

@jokeyrhyme Thanks for noticing. Yeah, the cursor was hard to see if the syntax theme uses a cursor close to One dark's background color.
Should be fixed in the next release. Will be blue like the border (might still change that again).

Yay! Thanks!


docs(toggle): update prop name for toggle OnChange in react

Pull request type
Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[x] Documentation content changes
[ ] Other (please describe):

What is the current behavior?
The documentation shows the wrong prop name to use
Issue Number: #19343
What is the new behavior?
The documentation example shows the right solution.
Does this introduce a breaking change?

[ ] Yes
[x] No

Thank you for the PR! Could you please make the change in the usage/react.md file and then run npm run build and push that? Let me know if there are any issues! Here's some more info on building documentation: https://github.com/ionic-team/ionic/blob/master/.github/CONTRIBUTING.md#modifying-documentation

Sorry if I take time to do it. I should schedule some times in this evening to update this PR :pray:


check tunable parameters for special names that should not be used

The user can decide on their own names for tunable parameters, but some names will lead to errors because they are also used by the tuner internally.
These include 'time', 'times', which are used by the tuner to report output back to the user.
The parameters 'grid_size_x', 'grid_size_y', and 'grid_size_z' are inserted into the code as C-preprocessor defines, if the user also uses these names for their tunable parameters I'm pretty sure it should lead to compile errors.
The idea is to check the tunable parameters to not contain these reserved keywords when the user calls tune_kernel and report a user-friendly error when if they do.

I'll start working on this.

One thing to add to this issue, we should also give a warning when none of the block size names are specified.
It can happen that a user decides to use other names than "block_size_x" and so on, but forgets to specify the block_size_names= option. If none of the block_size_names (default of non-default) are used in the tunable parameters, we can be almost sure the user is making a mistake.


Building relocatable Linux packages in CI

Similarly to what was done with AppVeyor #67 we need an equivalent for Linux builds. The packaging script needs to be appropriately developed. We expect our Linux CI (CircleCI) to output relocatable Dataframes package as an build artifact.

should this go to acceptance @mwu-tow ?

Yes. Now we need Linux luna-studio package with this Dataframes and give it some testing.

@mikusp can you try it while building next packages?

mikusp prepared the first luna-studio package for Linux that contains the Dataframe package:
https://github.com/luna/luna-studio/releases/download/<IP_ADDRESS>/luna-studio-linux-<IP_ADDRESS>-dataframes.AppImage
Please give it some testing. For example, try pasting the following:
import Dataframes.Table
import Dataframes.Types
import Dataframes.Column
import Std.Base

def main:
    fromList1 = Column . fromList "a" Int64Type [1,2,3,4,5]
    fromColumns1 = Table . fromColumns [fromList1]
    plot1 = fromColumns1 . plot "a" "a"
    None

and see if chart appears.

wdanilo reported the following:

It looks like in issue coming from our dynamic linker, @mikusp  will look into this.

On wdanilo's system ldconfig command is not visible:
wdanilo@phoenix ~> ldconfig -p
fish: Unknown command 'ldconfig'


Navigator.Share post

This is the post to support the Origin Trial of navigator.share

@PaulKinlan Looking now.

Some changes I'm making as I go so don't touch it until you hear from me.
The cause of the build failure is a simple fix so I'll get it while I'm there.

@jpmedley - looks like all your feedback was addressed. Merging.


Enhancement on Pipeline level provenance

Feature request

For a PipelineRun, Chains is able to dive into individual taskruns' type hinting results without pipeline author having to surface task results to pipeline results.
(Current Chains: only recognize pipeline-level type hinting results for a PipelineRun.)

Within a pipelinerun, Chains should generate a provenance as soon as it sees an artifact is generated by a task even though some tasks post artifact generation fail, which as a result fails the whole pipelinerun.
(Current Chains: will not generate a provenance until individual taskruns and the pipelinerun succeed.)

Per-artifact Provenance instead of Per-run Provenance
(Current Chains: generate multiple provenances with the exact same content, and those provenances are associated with different artifacts being generated from that Run)
Examples:

If a pipeline consists of tasks like clone -> build-push -> slack-notify, the provenance associated with the artifact should only contain the info of the tasks that contribute to the build process of the artifact, which would be clone and build-push in this case. In the 2nd feature request mentioned above, when slack-notify fails, the provenance should still be available for that artifact.
If a pipeline consists of 2 sets of tasks for producing 2 different artifacts, clone1 -> build-push-go (producing go artifact) and clone 2 -> build-push-oci (producing oci artifact), the provenance associated with "go artifact" should only contain information of tasks clone1 and build-push-go, whereas the provenance associated with "oci artifact" should only contain information of tasks clone2 and build-push-oci

Use case

Feature 1: better user experience and avoid errors that could happen when author propagates task results to pipeline results
Feature 2: the provenance associated with the artifact being generated in a pipeline is still available even though some post-artifact generation tasks i.e. slack notify or deploy task, or the tasks that have nothing related to building that artifact i.e. tasks for building other language artifacts failed. In particular, if we make provenance available before a deploy task, it would be helpful for some deployment gate mechanism which can do provenance verification and decide whether to proceed deployment.
Feature 3: "focused" provenance that only contain information of tasks that are related to the artifact generation is the real "per artifact" provenance.

Looking for feedback and thoughts! Thanks everyone.

cc @chitrangpatel @lcarva @wlynch

Thanks for filing this feature request! I do disagree with it for various reasons that I have outlined below.
First, I do agree with the current stance that everything in the pipeline contributes to the making of the software artifact, even tasks that have occurred after a binary was built. Consider a pipeline like this: clone -> scan-source -> build-push -> scan-image. I definitely care that the two scan tasks succeed. I consider the software artifact to be viable if the whole pipeline succeeded. Unfortunately, I don't think Tekton Pipelines supports optional Tasks. But you can get around this by extending the task definition (e.g. script) to not fail if cannot send a notification, for example. You can even emit a TaskRun result to indicate whether or not the non-critical task was successful. And this information will be available in the PipelineRun provenance which is handy.
Second, the main reason we added PipelineRun attestations is to provide the full picture of how the artifact was created. Removing parts of the PipelineRun is dangerous. What if a TaskRun deemed unimportant ran in parallel and modified the contents of the local git clone? I wouldn't want users to be responsible for determining which tasks are important - in fact, I wouldn't trust them to do so. I would also be concerned if we tried to do this automatically in Chains. Tekton Pipelines is quite flexible and there's a high chance Chains would get it wrong, if not initially then eventually.
Third, I don't think it's within the scope of Chains to slice and dice a PipelineRun. If the user truly wants their artifacts to be treated separately, they should use separate constructs. I don't know the status of Pipelines in Pipelines but that might be worth looking into. I'd prefer to add whatever construct is needed in Tekton Pipelines instead of implementing something that is Chains specific.

Thanks for starting this thread @chuangw6! I agree PipelineRun provenance is far from perfect.
That said, general +1 to @lcarva!

For a PipelineRun, Chains is able to dive into individual taskruns' type hinting results without pipeline author having to surface task results to pipeline results.
(Current Chains: only recognize pipeline-level type hinting results for a PipelineRun.)

Long term I'd like for https://github.com/tektoncd/pipeline/issues/6326 to be the answer here. I agree it's annoying and brittle today to need to force users to have to propagate these values back up. I don't think results are the right medium for this, they just happen to be an easy way we could hook into without upstream Pipeline changes.

Within a pipelinerun, Chains should generate a provenance as soon as it sees an artifact is generated by a task even though some tasks post artifact generation fail, which as a result fails the whole pipelinerun.
(Current Chains: will not generate a provenance until individual taskruns and the pipelinerun succeed.)

Few things here:

PipelineRuns waiting for Tasks to succeed before publishing - This is somewhat intentional. There is a race condition when writing OCI layers, since the .att manifest that contains the list of attestation layers needs to be updated altogether. We wait on TaskRuns to succeed before publishing the PipelineRun attestations to reduce the chance of collision, since these are likely to write to the same artifact.
Open to improvements here though! We've been waiting for https://github.com/opencontainers/distribution-spec/issues/250, but a blocking queue across reconcile threads would also help here.

PipelineRuns not publishing provenance on failure - Not sure if this was intentional. This sounds like a valid use case though 🤔 We would need to make sure we're capturing the status though so we can distinguish whether everything succeeded though. We may still need to wait for the Pipeline to complete before we try and publish the attestation though.

Per-artifact Provenance instead of Per-run Provenance
(Current Chains: generate multiple provenances with the exact same content, and those provenances are associated with different artifacts being generated from that Run)

I do think the idea of trying to better model the actual used inputs/outputs is interesting, but probably needs some more exploration / experimentation before we agree to accept. I agree with @lcarva that this is probably a fairly tricky problem due to the flexibility of Pipelines (but don't let that deter you from experimenting!)
This sounds like a graph reachability problem based on provenance inputs/outputs. While I don't think we could/should strip out config information about the Task/Pipeline specs, using something like this to inform what provenance we publish to what subjects seems interesting. 🤔
Thoughts off the top of my head:

Shared resources like workspaces would create dependency relationships that you'd need to model.
What happens if multiple branches in the Pipeline claim they produce the same artifact?
How does this impact spec verification to ensure the spec hasn't been tampered with (hopefully it shouldn't)
The case @lcarva mentioned of "I want to make sure all of these checks ran in my Pipeline" probably doesn't mesh well with this, and is something we want to make sure we can keep. I agree Pipelines-in-Pipelines might be a better fit here (also Step CRD, which would allow you to do a similar thing but w/ Tasks).

Thanks all for sharing the thoughts here!!
Agree that there are so much ambiguities in feature 2 & 3. It's worth noting that feature 3 is sort of derived from feature 2 to address the question: what amount of information we should include when we generate provenance as soon as an artifact was built. (So for feature 3, we might need to rethink what amount of information we should/need to include).
But for feature 1, RE @wlynch point

Long term I'd like for https://github.com/tektoncd/pipeline/issues/6326 to be the answer here. I agree it's annoying and brittle today to need to force users to have to propagate these values back up. I don't think results are the right medium for this, they just happen to be an easy way we could hook into without upstream Pipeline changes.

IMHO, it would be still beneficial and would be a plus to Chains v1 release to have Chains to dive into task level results to find type hinting instead of expecting authors to manually surface results to pipeline level. 2 reasons:

It's a step in the direction we want to pursue to replace type hinting approach. Regardless of which approach we ultimately adopt, the task is the level/block that generates artifacts. Therefore, I believe we would end up doing things at the task level instead of expecting authors to do things at the pipeline level. For example, https://github.com/tektoncd/pipeline/issues/6326 proposes tasks to output structured provenance data. So feature 1 is not going the opposite.
Better user experience. Even with the current type hinting approach, it is the task (i.e., git-clone, and kaniko catalog tasks) that expects type hinting parameters and produces type hinting results. The names of Params/Results on the pipeline level should not matter as long as authors pipe the right data into the tasks. Therefore, enabling Chains to dive into task level to find type hinting results would be a better user experience and a less error-prone approach. This way, pipeline authors don't need to worry about the rules when defining their pipelines as long as they pull in right tasks.

Got it, so the idea is we would just take a union of all the Task provenance and promote that up as the Pipeline provenance? 🤔

I am not sure if I perceive the term union of Task Provenance same way as you use :D Please let me know if the following makes sense.
The idea is to take the union of all Tasks' results and use them for the subjects and materials/resolvedDependencies in the pipeline level provenance, rather than checking results on the pipeline level.

Current: Pipeline has to define some type hinting results on the pipeline level and propagate value from taskruns in order to let chains understand what artifacts were generated.
Proposed: Pipeline author doesn't need to define those type hinting results on the pipeline level. Instead, Chains looks into each individual taskruns' results and understand what was used/generated.

The idea is to take the union of all Tasks' results and use them for the subjects and materials/resolvedDependencies in the pipeline level provenance, rather than checking results on the pipeline level.

When we implemented PipelineRun attestations, this was the initial idea. But we decided against it to keep things simpler on the implementation side. Also, the argument was that Tasks are likely to be reused way more often than Pipelines. So adding a specially named result to a Pipeline could make pretty much any Task compatible with Chains.
+1 to revisit this. Not having to "promote" the result from the Task to the Pipeline is a nice feature. I think it also makes it easier to reduce some blind spots in the SLSA Provenance.

@chuangw6 I think we're on the same page. By union I mean set union, so the Pipeline provenance would include the aggregation of all Task provenance.
As long as there isn't ambiguity around what would be included that seems reasonable to me. 👍

/assign

/close
Close this ticket as the feature 1 (type hinting improvement) described in the original description was done, and feature 2&3 may or may not be considered in the future, but not at the moment.
Specifically, feature 1 was completed by the 2 main PRs

https://github.com/tektoncd/chains/pull/866
https://github.com/tektoncd/chains/pull/903

and some other related/derivative PRs

https://github.com/tektoncd/chains/pull/885
https://github.com/tektoncd/chains/pull/887
https://github.com/tektoncd/chains/pull/891
https://github.com/tektoncd/chains/pull/904
https://github.com/tektoncd/chains/pull/913
https://github.com/tektoncd/chains/pull/926


Add a whitespace when encountering a br node

Prevents br nodes from causing text from after the br node to be
directly after the text before the br node without any whitespace.

Hello Vincent,
First of all, thanks for caring enough about goquery to work on this PR, I appreciate it (kudos for adding a test too!). I understand the motivation, however there are a few concerns with the proposed solution. I don't like adding this specific special-case for
 as this makes a precedent for many other cases: what about
? And
, or some may even argue for
 or any block element to have similar behaviour. And while you added a standard space here, some may want a newline, a non-breaking space, etc. There are many ways that this could be implemented and I don't feel like it makes sense for goquery to decide which way it is.
I think this could be part of a larger "pretty-printer" implementation that could work on a goquery selection (or more likely - as a more general solution -, on an html.Node, in which case it doesn't even have to be part of goquery nor to depend on it). I recall some discussion about this in a previous issue, that would be a pretty interesting project in itself.
And besides, the current behaviour is the same as jquery's, so there's a good reason to keep it this way too (without talking about how this could break stuff for existing code).
So for those reasons, I'm gonna have to decline this, sorry but I hope you understand the rationale!
Thanks,
Martin


User Agents

fixes #4552
This PR changes the way user agents are derived in cert-manager to take the form of:
cert-manager<component name>/<version> (<os>/<arch>)  cert-manager/<git commit>

More details can be found in this design https://github.com/jetstack/cert-manager/pull/4758
Here we implement a new ContextFactory struct which is responsible for creating controller contexts, which have the specific controller user agent injected into the Kubernetes REST config and clients.
ACME clients have also been updated to receive a user agent that is piped down from the caller.
/milestone v1.8
/kind feature
Changes cert-manager controllers and ACME clients to use new user agent format "cert-manager<component name>/<version> (<os>/<arch>)  cert-manager/<git commit>". Field managers now take the form of "cert-manager<component name>.

/milestone Next

/assign


build-scaleway-ubuntu1604-x64-1 offline

jdk16 build hung waiting to run create_installer_linux:

I've brought the node back online, doing the old trick of adding a dummy "label", re-launch Agent, then removing the dummy label, did the trick.

Hopefully resolved now.


IGNITE-4052

Protos.FrameworkInfoSetup.SetUser added getting MESOS_USER option.

IGNITE-4052 | Closed
closing PR, feel free to reopen if needed


WIP: report pull progress to stderr

WIP: report pull progress to stderr
Proper solution is to update samalba/dockerclient and docker/libcompose in Godeps when the implementing PRs are merged

See samalba/dockerclient#170

Addressed by #659


add rpc support on win ci

Enable RPC tests on windows CI

It fails on some tests, some of them are my responsibility but others are related to file loader, I have to review it carefully.

Can we remove file loader from CI and merge the changes for RPC it is passing the tests

I have investigated a bit and I found few things:

It seems sys/stat.h is ported to windows, as you PRed in the file_laoder, so let's use it as it is for now, if some old version of windows breaks, we will take care eventually.
I have tried to improve how the dlls are installed (aka, the dependencies) rather than let the ps1 script do it, I implemented it from CMake. It can be improved by the way, I left it as TODO with links to the proper way of doing it, but it's something for now.
The glob test fails because glob is not implemented in windows, there was also another error with paths. I have left a TODO there too. It should work as it is now.

I am gonna close the issue because I did a lot of tests with the ci for reviewing everything and I ended up implementing it in parallel a part from this PR. But this can be closed for now, file (almost) and rpc loaders are implemented now in windows, and all tests are passing.