Run at startup setting not reflected in task manager > startup

ℹ Computer information

Windows build number: 1809 LTSC
PowerToys version: 0.20.1
PowerToy module: n/a

📝 Provide detailed reproduction steps (if any)

Install powertoys
restart
powertoys runs on startup, but there is no entry in the task manager > startup list to reflect this

✔ Expected result

When I go to task manager > startup there should be an entry for powertoys, that I can disable and enable like any other service/app that wants to run-on-startup.
The run-on-startup setting in the powertoy gui and the entry in the task manager > startup list should always remain in sync, regardless of where the actual change is made.

❌ Actual result
There is no entry in the task manager > startup list for powertoys.
📷 Screenshots

We do it via scheduled task. It's the only why to auto start a program with elevated privileges without showing the UAC prompt at startup.

@crutkas
what is the expected change here?
If we want to keep supporting running PR as admin, there is no alternative to the scheduled task, otherwise we open the door to a very serious security bug.
If we want to show up in the task manager list, we would have to remove the "Restart as administrator" option.

Would it be possible to add a proxy/dummy non-admin startup entry? Then 2 way monitor/sync the startup entry and the scheduled task?

@Spunkie
that would be a rabbit hole, we have already enough issues with the current mechanism, adding another layer of complexity is not some we can commit to. We are a very small team and we try to simply things as much as possible.
Closing the issue for now.


Allow user to ignore cpu packages shipped in the pex to Yarn

Description
Type of change

[x] Feature
[ ] Fix
[ ] Release

Checklist

[x] I have followed the CONTRIBUTING guidelines.
[x] I have updated the CHANGELOG.

@Mbompr can we merge? I'd like to make a release

Yes, I don't have write access but it is ready.


implementation of getNearSolution

Good library, I was using it to generate a map in MTA:SA but I didn't know how to obtain the solution of this map, I think this could help the library. It will return the closest route to the maze.

Hi, thanks for the PR! There's a couple things I'd like to point out:

This doesn't work on mazes with more than two dimensions
This understands simple representation coordinates, not actual maze coordinates (i.e. {1, 1} should be the cell in the top left corner, not a "wall")
This doesn't validify user input
It would be nice if the return value was a list of directions to move in rather than a list of coordinates

Since you're implementing this function as a method of the Maze class, it'd be more efficient to use the internal Cell objects directly instead of first converting to the simple representation. By using the internal Cell objects, you'll be able to easily query all connected cells in a dimension-agnostic way, which fixes the first two issues. Additionally, the Maze class has a few methods you might find useful for validifying user input.


[Bug]: Discord OAuth is broken after upgrading to 3.4.0

Package
@lucia-auth/oauth
Describe the bug
Dependencies:

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Error message:
Type error: Argument of type 'Auth<{ adapter: InitializeAdapter<Readonly<{ getSessionAndUser?: ((sessionId: string) => Promise<[null, null] \| [{ id: string; active_expires: number; idle_expires: number; user_id: string; }, UserSchema]>) \| undefined; } & Readonly<...> & Readonly<...>>>; ... 4 more ...; getUserAttributes: (data: UserSchema) => { ....' is not assignable to parameter of type 'Auth<any>'.
--
14:23:49.793 | Types have separate declarations of a private property 'adapter'.
14:23:49.793 |
14:23:49.793 | 30 \| export type Auth = typeof auth;
14:23:49.793 | 31 \|
14:23:49.794 | > 32 \| export const discordAuth = discord(auth, {
14:23:49.794 | \|                                    ^
14:23:49.794 | 33 \|   clientId: env.DISCORD_CLIENT_ID,
14:23:49.794 | 34 \|   clientSecret: env.DISCORD_CLIENT_SECRET,
14:23:49.794 | 35 \|   redirectUri: `${env.NEXT_PUBLIC_URL}/login/discord/callback`,
14:23:49.996 | error: script "build" exited with code 1 (SIGHUP)
14:23:49.999 | Error: Command "bun run build" exited with 1

Source code:
// lib/auth.ts

export const auth = lucia({
  adapter: planetscale(connection, {
    user: "user",
    key: "user_key",
    session: "user_session",
  }),
  env: isDev ? "DEV" : "PROD",
  experimental: { debugMode: isDev },
  middleware: nextjs_future(),
  sessionCookie: {
    expires: false,
  },
  getUserAttributes: (data) => {
    return {
      email: data.email,
      username: data.username,
    };
  },
});

export type Auth = typeof auth;

export const discordAuth = discord(auth, {
  clientId: env.DISCORD_CLIENT_ID,
  clientSecret: env.DISCORD_CLIENT_SECRET,
  redirectUri: `${env.NEXT_PUBLIC_URL}/login/discord/callback`,
  scope: ["identify", "email"],
});

// app.d.ts

/// <reference types="lucia" />
declare namespace Lucia {
  type Auth = import("./lib/auth").Auth;
  type DatabaseUserAttributes = {
    email: string;
    username: string;
  };
  type DatabaseSessionAttributes = {};
}

Rollback the dependencies to 3.3.1 and there will be no errors.

To my understanding, there was no changes that affect the Discord OAuth provider in 3.4.0

Thank you for your reply.
The issue has been resolved, it was not related to the Discord OAuth provider.
After upgrading from bun 1.0.7 and running bun i, the error disappeared (the bun.lockb file was updated).
I suspect it might be related to the bun install peer dependency duplicate version bugfix that was addressed in bun 1.0.8, although I did not verify this specifically.


Client versions 4.5 and server 4.5 breaks makefile commands

Removed the check, and include a warning message and the Client Version in the output.

Fix: https://github.com/open-cluster-management/acm-hive-openshift-releases/commit/705779b4db0761a9bb7efa9e07b752676f3089a8


Support prefix on S3 object names

Currently, all objects in S3 are placed in the root of the bucket. This makes tusd adoption difficult for existing applications that use a different convention, such as using S3's support for prefixes to place objects in a pseudo-directory like s3://my_bucket/media/incoming/<upload id>. This PR introduces an ObjectPrefix field on S3Store to enable the use of prefixes.
Addresses one of the requests in #207.

@Acconut - when you have time, I'd love to get some feedback on this.

I'm sorry for the delay, I thought I commented on it literally a few hours ago. But maybe I just missed the submit button.
Anyways, I wanted to ask for your reasoning behind this PR. I was wondering about it since the referenced issue #207 took another approach.

No worries. My reasoning is mostly what I mentioned above — established applications that have a large collection of existing objects in a directory (prefix) may want newly uploaded files to be placed in that same directory. In our case, the directory is a long-used convention that realistically can't be changed. tusd doesn't currently provide a solution for this since all files are placed at the root of the bucket, and there's no way to override that behavior. My goal here is to provide a simple, non-breaking parameter that solves that problem.
Regarding the other PR, we experimented with using a post-upload hook to move/rename the uploaded files into our existing directory, but the operation was far too slow and unpredictable for our use case.

Thank you for the detailed information and the nice PR :+1: I am happy to incorporate this feature into tusd.

guys, i just trying to make this available too in gcs store. and i discover when using prefix with underscore, i get bug because when creating chunk, idx suffix is splitted with underscore.
i think its best to validate prefix name first in startup


Can you provide the exported pb file or the output node name?

Thanks for your work, I want to export the model to the pb file, need the output node name, I've tried "output_node_names = ['conv_sbbox', 'conv_mbbox', 'conv_lbbox']", but always exited with error: "AssertionError: conv_sbbox is not in graph".
My export code is:
import tensorflow as tf
from tensorflow.python.framework import graph_util

input_checkpoint = './checkpoint/yolov3_test_loss=3.2609.ckpt-43'
output_graph = './pb_checkpoint/yolov3_test_loss=3.2609.ckpt-43.pb'
output_node_names = ['pred_sbbox/conv_sbbox', 'conv_mbbox', 'conv_lbbox']
saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)

with tf.Session() as sess:
    saver.restore(sess, input_checkpoint)
    output_graph_def = graph_util.convert_variables_to_constants(
        sess=sess,
        input_graph_def=sess.graph_def,
        output_node_names=output_node_names)

    with tf.gfile.GFile(output_graph, "wb") as f:
        f.write(output_graph_def.SerializeToString())
    print("%d ops in the final graph." % len(output_graph_def.node))

Can you provide the exported pb file or the output node name?
PS: I've checked the output node name via tensorboard, it shows  ['conv_sbbox', 'conv_mbbox', 'conv_lbbox'].

@markgao-916 hi mark, can you please check this issue?

I am sorry to say i have not do this work, but this work refer tohttps://github.com/YunYang1994/tensorflow-yolov3, you can check from the origin work.

sorry, I missed the frozen_graph.py, it can export the pb file. Thanks mark! @markgao-916


Search for node_modules in parent directories when getting type roots.

Fixes #10617
Note that this only gets the nearest node_modules. It would be easy to modify this code to search for as many as possible rather than just taking the first one; would we want that?
Also, this does not get globally installed node_modules. This has a different location on different people's machines, although we could just include all possible locations and check of the ones that don't exist.
Also, @vladima is there a reason we have directoryExists optional but fileExists mandatory?

@andy-ms could we make the behaviour consistent with the compiler's existing moduleResulution: node implementation? That's already present in the compiler and it searches up multiple levels (if neccessary) which matches runtime behaviour (except I think it doesn't look for global node_modules).
The existing 'searching up' implementation is in program.ts here.
I understand this is a slightly different thing, because you are not searching for a specific module, but looking for whatever you can find in a @types directory. But it's more consistent with runtime behaviour if you keep searching up and accumulate all the @types/X typings you find.
If the compiler does not search up multiple levels for @types, there are two problems that would be surprising for users:

it will fail to compile programs that are valid/work fine at runtime.
it will be internally inconsistent in that something like import * as ts from 'typescript' will search up multiple levels to find the tsc typings, but import * as fs from 'fs' will not search up multiple levels for the node typings.

👍

please port these to release-2.0 branch as well.

Since this is fixed in 2.0 branch.  Question is which release version at the earliest contain this fix?

@fletchsod-developer Works for me in 2.0.3. This isn't in 2.0.2 as that was published in before this change was made.


Remove unused dependencies from geo-layers

Coverage remained the same at 80.851% when pulling 487d25a66424cbc0ce7ccfbb2a6d4af7622dafd6 on x/geo-deps into c66e3e5bca63b6e214c27259025947dcfa7e359a on master.


Disable edit button and hide remove button if election is finished.

(Fixed #3099)

Done and rebased.


[dependency] update golang sub-repositories

Description
update golang sub-repositories

golang.org/x/sys
golang.org/x/net
golang.org/x/text
golang.org/x/term

Changes include

[x] Bugfix (non-breaking change that solves an issue)

Checklist

[x] I have assigned this PR to myself
[x] I have added at least 1 reviewer
[x] I have added the relevant labels

Testing

[x] I have tested this code with the official test suite

Codecov Report

Merging #306 (abbe1ec) into dev (a840ee8) will decrease coverage by 3.53%.
The diff coverage is 41.12%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##              dev     #306      +/-   ##
==========================================
- Coverage   51.21%   47.68%   -3.53%
==========================================
  Files         117      131      +14
  Lines       17525    19836    +2311
==========================================
+ Hits         8975     9459     +484
- Misses       7789     9559    +1770
- Partials      761      818      +57

Impacted Files
Coverage Δ

blockchain/storage/kvstorage/kvstorage.go
54.16% <ø> (+2.46%)
:arrow_up:

chain/chain.go
28.69% <ø> (ø)

consensus/ibft/hooks.go
55.26% <ø> (ø)

consensus/ibft/pos.go
0.00% <0.00%> (ø)

helper/keccak/keccak.go
0.00% <ø> (ø)

helper/keccak/pool.go
0.00% <ø> (ø)

jsonrpc/debug_endpoint.go
36.08% <0.00%> (-0.76%)
:arrow_down:

jsonrpc/net_endpoint.go
0.00% <0.00%> (ø)

network/bootnodes.go
85.71% <ø> (-14.29%)
:arrow_down:

network/connections.go
98.07% <ø> (ø)

... and 131 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Fe 339 unit tests for tables

Developer considerations

[ ] Increment the version number for relevant packages

[ ] This is a new MAJOR version (incompatible API changes were made)
[ ] This is a new MINOR version (functionality was added in a backwards compatible manner)
[ ] This is a new PATCH version (backwards compatible bug fixes)

[ ] Update the CHANGELOG.md with a summary of the changes

If this is a MAJOR version, what are the breaking API changes? Was anything added to the API?
If this is a MINOR version, what feature was added? Why would consumers want this new version?
If this is a PATCH version, what was fixed?

[ ] Update the appropriate documentation. Keep in mind that this mono repository has README files at the repository, project, and component levels. We want developers to be able to find what they need from the main README, so make sure to add links to component documentation if adding something new.

Closed for https://github.com/justifi-tech/web-component-library/pull/176


Backup SD cards to your Mac for later etching

Would be a great feature!

I think this is a dupe of https://github.com/resin-io/etcher/issues/266

Agreed - closing as duplicate of #266


Partially revert ab84f9be5740d4649d734e73b84f17f85e52ffc9

As discussed in the comments for ab84f9be5740d4649d734e73b84f17f85e52ffc9, this code block is necessary thanks to our shiny json parameter.
As a temporary workaround, this reinstates the code Kenneth hates so much so that the builds start working again. @kennethreitz feel free to replace this with something else longer term if you still hate it. :grin:

import json as notsimplejson :P

import json as complexjson? :grin:

import json as _json Really anything to make sure this works properly is a good thing.

ping @sigmavirus24

:+1: but the tests still seem to be broken because other things were relying on json being a module defined in requests/models.py http://ci.kennethreitz.org/job/requests-pr/662/PYTHON=2.7/console

I'm doubling down on complexjson here.

:cake:

Forgot something...
:sparkles: :cake: :sparkles:


⚠ BCR Bot has degraded performance

In d4ed935, BCR Bot (https://bcr.alternativasinteligentes.com/BCRApi/web/chatbot) experienced degraded performance:

HTTP code: 200
Response time: 974 ms

Resolved: BCR Bot performance has improved in b5570ee.


Metamodel does not match spec: TextDocumentFilter

I think some things have changed here for the new notebook stuff, but it's quite different in the metamodel. In particular, it has a complex type that expresses the fact that at least one of the fields should be present. I'm not sure this adds much and it makes it much harder to consume, perhaps we could just make all the fields optional.
Spec (for DocumentFilter which I guess becomes TextDocumentFilter):
export interface DocumentFilter {
	/**
	 * A language id, like `typescript`.
	 */
	language?: string;

	/**
	 * A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
	 */
	scheme?: string;

	/**
	 * A glob pattern, like `*.{ts,js}`.
	 *
	 * Glob patterns can have the following syntax:
	 * - `*` to match one or more characters in a path segment
	 * - `?` to match on one character in a path segment
	 * - `**` to match any number of path segments, including none
	 * - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}`
	 *   matches all TypeScript and JavaScript files)
	 * - `[]` to declare a range of characters to match in a path segment
	 *   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
	 * - `[!...]` to negate a range of characters to match in a path segment
	 *   (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but
	 *   not `example.0`)
	 */
	pattern?: string;
}

Metamodel: I'm not going to paste it here, it's very long, but at any rate does not correspond to the type definition above.

I actually opt to go the other way and note that in the specification. An empty document filter is a source of errors.
I updated the specification.

As a Haskeller I'm all in favour of using types to prevent errors, but this feels quite heavyweight for what it achieves. It is worth noting that most of the consumers of the metamodel will not be using typescript with its good support for structural types and unions, so this is much more painful for them.

IMO they can simplify things if their language doesn't express it. But the other way they can't.

It probably requires special casing this type, though, which is annoying.


Problem with iCal calendars - Gmail

Hi,
I just had a problem with my iCal Gmail calendar. When I start MagicMirror, only some events, espaced in time, are showing... I check in Google Agenda, and all my events had the same access: private.
Could you help me?

Please refer to http://forum.magicmirror.builders for support and troubleshooting.
I'm closing this issue for now. If you feel this issue should remain open, please let me know.


Set microservice-specific config params.

Reordering app spec entries and populating the env list with the microservice-specific settings.
Retrieving microservice-specific settings from app spec and printing them out for debugging purposes.

She looks pretty glow ! :+1: — Approved. :blue_heart:


must_change and lock out options should be disabled for existing logins

SSMS

ADS

the login is locked out should be disabled
SSMS

@caohai in ADS it is not even displayed for new login. The problem here is when editing existing login with sql auth, the backend is returning canEditLockedOutState as true.

@caohai in ADS it is not even displayed for new login. The problem here is when editing existing login with sql auth, the backend is returning canEditLockedOutState as true.

Should I just return false for canEditLockedOutState, in PR I set it to IsNewObject


Wrong Pipe Type Used For Promise

(The Documentation)
According to the documentation and the definition, Js.Promise.then_ receives a callback as the first argument, and the promise to chain as the second argument. However, inside the documentation, -> is used instead of |>, which makes the code invalid.

@XiNiHa I believe the Js.Promise documentation using -> (pipe first) was an intentional change as |> (pipe last) has been "deprecated". The Js.Promise documentation specifically is leveraging pipe placeholders so that -> is valid code.
I believe Js.Promise was created prior to the decision to deprecate the triangle pipe, which is why its argument order may seem odd. Also, it seems like the reality is that pipe-last is largely "not recommended," rather than actually deprecated or planned to be removed.

Oh, I knew that it was deprecated but thought that it should still be used with current Promise API since the doc mentioned that the new API is coming. Anyway, didn't know about pipe placeholders-sorry for an invalid issue


Breaking Changes for 8.x

Thanks so much for this library, it's great.  My package updating OCD is itching to update this package, but the wiki doesn't list any breaking changes for 8.x: https://github.com/shouldjs/should.js/wiki/Breaking-changes.  Is that due to oversight, or a lack of breaking changes? Any rough indication on how difficult the upgrade would be would be greatly appreciated.
Thanks again, and happy new year!

hello. Yep i forgot to fill it, sry.
In 8.x i have not added a lot of breaking changes. You can take a look now.
You can also look at History.md file which i fill for each release.

Awesome thanks!


Flashing instructions

Add a tutorial for flashing to the boards. Located under Tutorials / Flashing Firmware
also closes 221.
To preview, run mkdocs serve from racecar/docs. More details here

@CameronBeneteau  can you read over this? Don't need you to replicate it


Think about removing the dispose method from NodeBase

I'm not convinced this base class should be disposable. There are some cases where preventing clearing the node is useful (cache pools), and not really any cases where it's truly required.

No longer relevant.


Missing test: Learn String Manipulation by Building a Cipher

Describe the Issue
Step 16 (and presumably most steps) have no check that the line "shift = 3" stays in the code.
Affected Page
https://www.freecodecamp.org/learn/scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/step-16
Your code
text = 'Hello World'
alphabet = 'abcdefghijklmnopqrstuvwxyz'
index = alphabet.find(text[0])
print(index)
print(text.lower())

Expected behavior
The above code clears the challenge, but (to my understanding) it should not because code that will be used later has been deleted
Screenshots
No response
System

Device: [e.g. iPhone 6, Laptop]
OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04]
Browser: [e.g. Chrome, Safari]
Version: [e.g. 22]

Additional context
I'm not sure what the feeling around fixing this issue is, given that it's low stakes (the code will return in the next step) and multiple steps are affected. If people think action should be taken on this, I can go through the code for each challenge and see which steps are missing this check.

The line of code shift = 3 is not part of the solution for that step, it wont be tested. I hope I understood the issue correctly.

In each step, only the relevant part of code for that step is tested (what you need to change).
This does not mean that the code will work if something outside the tested portion is changed, but we are not going to write specific tests to check that.


prerendered assets are stored without file ending

Describe the bug
When prerender set to true and a +page.ts file makes a fetch request, the response of that request get's written to disk.
But it does so without a file ending. So when making a request to /api and /api/child the first response get's saved as
/api (file) and when it tires to save the second response, an error get's thrown because SvelteKit tries to create the /api folder to save the /api/child file.
Reproduction
https://stackblitz.com/edit/sveltejs-kit-template-default-vrpjqd
Running npm run build will throw an error.
[Error [ENOTDIR]: ENOTDIR: not a directory, mkdir '/home/projects/sveltejs-kit-template-default-vrpjqd/.svelte-kit/output/prerendered/dependencies/api'] {
  syscall: 'mkdir',
  errno: -20,
  code: 'ENOTDIR',
  path: '/home/projects/sveltejs-kit-template-default-vrpjqd/.svelte-kit/output/prerendered/dependencies/api'
}

Logs
No response
System Info
`StackBlitz`

Severity
blocking an upgrade
Additional Information
No response

Workaround for now:

don't use nested API endpoints
include a . in the route

FWIW we call this out in the docs already: https://kit.svelte.dev/docs/page-options#prerender-route-conflicts
I don't think there's any way around this. We can't just change the name of the saved files, because if /api is saved as <output>/api.json, someone accessing /api directly (whether via a fetch in their app, or by typing it into the URL bar) will get a 404. .html is the exception (and even then, some webservers need extra configuration before treating <output>/foo.html as /foo).
All we can do is detect the error and guide the developer towards a resolution

#9692

Thanks for adding the error message and guiding to the docs!
I haven't seen this section before.


fix: Move version validation to init, log warning instead of raising exception

Add test for #707.

Codecov Report

Merging #708 (fdc6fc7) into main (c51eedd) will decrease coverage by 0.03%.
The diff coverage is 98.11%.

@@            Coverage Diff             @@
##             main     #708      +/-   ##
==========================================
- Coverage   89.62%   89.60%   -0.03%
==========================================
  Files         166      166
  Lines       13278    13279       +1
==========================================
- Hits        11901    11899       -2
- Misses       1377     1380       +3

Impacted Files
Coverage Δ

dataquality/core/finish.py
100.00% <ø> (ø)

tests/core/test_finish.py
100.00% <ø> (ø)

tests/loggers/test_tabular_classification.py
100.00% <ø> (ø)

tests/test_utils/mock_request.py
70.27% <ø> (-0.25%)
:arrow_down:

dataquality/utils/version.py
94.44% <75.00%> (-5.56%)
:arrow_down:

dataquality/core/init.py
93.96% <100.00%> (+0.10%)
:arrow_up:

tests/core/test_init.py
100.00% <100.00%> (ø)

tests/integrations/fastai/test_cv_fai.py
100.00% <100.00%> (ø)

tests/integrations/fastai/test_text_fai.py
100.00% <100.00%> (ø)

...sts/integrations/hf/test_text_classification_hf.py
100.00% <100.00%> (ø)

... and 14 more

... and 1 file with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Are the player prices updated live?

My only suggestion would be if the autobuyer could update the player prices live during the search.
Sometimes if you perform a search, example GOLD players from Premier League to be bought at 850 coins, the autobuyer doesn't find any player. But if I perform the search manually, I am able to snipe one or two players at 850.
Do you have any suggestions? Thanks

You can toggle either random min bid or buy to get updated transfer cards

You can toggle either random min bid or buy to get updated transfer cards


Menu items squeeze together and overlap

If you have many menu items, they squeeze together, even overlapping so they are hard/impossible to get to. This is new in 2.0.0. In older versions the menu items dropped down, so that you could have two or three or any number of stacks of items on top of each other. Now you are forced to add "stackable" which is the ugliest thing ever when you have many menu items.

I dont agree that menu content should allow for wrapping. If you do want to enable this for a menu add flex-wrap: wrap; to the menu which you do not want to collapse.

That worked, thanks. Also, I meant a tabular menu, I don't know why I forgot to mention that.


Enhancement: Get last workfile representation method

Changelog Description
Adding a method to easily get last published workfile representation.  I think it can be pretty useful when handling published workfiles so I'm proposing it as an enhancement.
Testing notes:

Download last workfile with the Copy Last Published Workfile pre launch hook (either choose an asset you don't have locally, append _old to its task directory to trick OpenPype into redownloading it or use Force Download Last Workfile if available).
It should have the same behavior as it usually has.

Now searching for the workfile representation using version.
I also had to add a check for the workfile representation in the copy last published workfile hook, otherwise in case there are no workfile representation (typically if no workfile has been published yet), it would try to download for a while, which made launch time abnormally long in this case.

I'm sorry, but i have to put this one into the non-mergable category at this point. It will not be relevant in the same way in AYON, hence it expands on old code in a way that is not future proof. Thank you for the effort, but I have to close this.


Change is_pretokenized to is_split_into_words.

The tokenizer encoding argument is_pretokenized has become is_split_into_words.

Thanks for the contribution @yongzx is_split_into_words is not compatible with the transformer version we are currently using. We will change this once we upgrade to the newest transformer version.

Closing as we upgraded the repo and now the issue is resolved.


Add limit to docket numbers

PDF can only have 8 docket numbers before overflowing.

Fixed:
Changed docket numbers input to area. Made a maximum character limit.


WR-548 Social icons and styling updated.

@jchera please assign this PR to a reviewer, otherwise it will not move.


Alpha 1.0 Release (Database Agnostic Spreadsheet Program)

I've realized that I could turn the program into a database agnostic fully fledged spreadsheet program with about a months worth of work. Any features you'd like? Here's what I have planned:

Edit cell
Add row below/above
Remove row below/above
Add column left/right
Remove column/right
Macros? Need to think about which functions would be most helpful in which circumstances. Currency conversion or something maybe.
Cell highlight/coloring
Expand column to fill screen
Serialize (this is going to be the hardest part because it's different for every database)
Copy/paste (going to also be tricky to implement

That's all for Alpha 1.0 release
Need to think about input. I need text and dialog boxes, maybe some more fancy stuff, but having mouse / keyboard support for all of this is maybe kind of cluttered so maybe some kind of vim-esque structuring idk
PRs related to this effort welcome and suggestions / feedback appreciated!

Edit cell and serialization were just added. Likely a first pass of both but they hold up pretty well with testing I've done. Up next is add remove row, raw SQL, and an expanded edit during selection mode!

Awesone concept .
I think that you might want to consider using gio which is a 100% golang based gui that runs on web, desktop and mobile
It already has a lot of what you need for a spreadsheet.

https://gioui.org/
start with this example 👍 . It’s a app scaffold:
https://github.com/gioui/gio-example/tree/main/component
This example shows multiple tabs, which you will need: https://github.com/gioui/gio-example/tree/main/tabs
There is a list component that scrolls and a forms component .
you could easily extend the list component to make a Data Table widget which is really the missing but you need.
If you want some advice just ask.

I've seen that library floating around, one of my favorites after Fyne.
This app was designed to run in a headless environment (I made it for work initially). I'm not sure how useful it would be to 180 pivot what I'm doing here to do a GUI, however. I've seen lots of SQLite GUIs, and making this app GUI based would require a complete overhaul in order to make it platform agnostic. It would honestly be easier to just build something from scratch.
That being said, if you want a challenge @gedw99, feel free to fork or open a PR or whatever. I started this project with 0 expectations and I have no idea if a GUI based off termdbms is needed/wanted in the world. Do you think there's a need for it?
I've just started on 0.7-alpha release. After I finish SQL querying and context dialogs for add/remove rows/columns or macros, I think I'll be ready for the final round of polish before 1.0-alpha. GUI for beta 1.0?

There already is USQL
https://github.com/xo/usql
it’s a cli / tui for all databases . It supports about 20 db’s and  is written in golang also.
I am personally more interested in gui tools that can express a database where users can work without a cli / tui and that run on web , desktop and mobile.
Why ?
Tooling is what your into and so am I. Can’t help it :)
but the tooling value chain is now moving higher up in the stack into Low Code sector where non devs can build a pretty decent web or mobile app with a developer only getting involved to tweak the hard bits.
It’s my own bias of course.
Gio is compelling for these tooling scenarios becaus it can run anyway and it’s pretty easy to build a Low Code like IDE on top of it .
The database editor is very easy to build on top.
that’s why I started to use gio on top of ent .
ent of course is semi low code. It’s basically hibernate for the golang community but better and you need to code gen.  But it so close to billet proof that you could stick a Compiler as a Service layer on top of it with a gui and the Low Code user would have no des that it’s doing code generation under the hood .
Hope I am explaining myself well enough

@gedw99 yeah you're explaining it fine. UI is a useful thing and I'll keep it in mind if I want to expand this.
That other project may be very powerful and feature rich but it looks kind of horrible. The whole reason I love @meowgorithm libraries is because it makes using the terminal feel good. UI/UX is important no matter the medium.

Yeah usql is not as complete as yours .

Hey @mathaou Are you still planning on making this into a quasi spreadsheet ?
I think the hardest part would be a datalog / prolog like aspect, where changing a value in one cell causes other functions and cells to update ?
http://www.j-paine.org/compiling_spreadsheets_to_prolog.html explains the logic of this concept.

Hey @mathaou Are you still planning on making this into a quasi spreadsheet ?
I think the hardest part would be a datalog / prolog like aspect, where changing a value in one cell causes other functions and cells to update ?
http://www.j-paine.org/compiling_spreadsheets_to_prolog.html explains the logic of this concept.

Thanks for the info. Yeah after learning more go and realizing mistakes I made along the way, I need to basically rewrite good portions of the backend to support things like that and also support line wrapping among other things.
Basically there needs to be a shim between the data layer and presentation layer, and the buffer of what gets displayed on the screen needs to be a single array. Implementing functions for cells should be fairly easy, but I would need to think about if those functions should be preset or I have functionality to write your own functions.
So I'm currently in the rearchitecture phase rn, but I'm also very strapped for time so the rewrite is a 2022 goal. Forks + PRs appreciated.


MyBatisPlus still not supporting SpringBoot3.0

当前使用版本(必填,否则不予处理)
3.5.2
该问题是如何引起的？(确定最新版也有问题再提!!!)
Not supporting SpringBoot3.0
重现步骤(如果有就写完整)
报错信息
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
When MyBatisPlus will be updated to support SpringBoot3.0? SpringBoot3.0 already officially released, but the problem with MP is still present.
Thanks!

we are waitting for it for a long time。haha

<IP_ADDRESS>-SNAPSHOT

do you have a release plan?

<IP_ADDRESS>-SNAPSHOT

do you have a release plan?

支持SpringBoot3.0的正式版，什么时候能发布呢？大佬给个时间点呗～

<IP_ADDRESS>-SNAPSHOT

do you have a release plan?

你们试过这个版本能用就发

@miemieYaho When I tried, I get this error:
Could not find artifact org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:<IP_ADDRESS>-SNAPSHOT

Try to run Maven import with -U flag (force update snapshots)

@miemieYaho When I tried, I get this error:
Could not find artifact org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:<IP_ADDRESS>-SNAPSHOT

Try to run Maven import with -U flag (force update snapshots)

Also, get the same error whit mybatis-plus-boot-starter
Could not find artifact com.baomidou:mybatis-plus-boot-starter:jar:<IP_ADDRESS>-SNAPSHOT

Try to run Maven import with -U flag (force update snapshots)

I think this bug is very easy to solve, but I don't know why till now did not get solved. If you do not have the plan to release a stable version that can support SpringBoot3.0, and want to stack in SpringBoot version < 3.0, then you can tell us here to not wait for this framework and start to use other frameworks. Thanks!

You are not using maven repositories from https://oss.sonatype.org/content/repositories/snapshots/ .
I have closed a large number of issues in batches at https://github.com/baomidou/mybatis-plus/pull/4870, but a steady stream of people open new issues without searching for historical issues. Almost no one opens an issue with a git with a minimal reproducible example, which is definitely not good for us to continue the topic, because I can't believe that I or you can read minds.

支持SpringBoot3.0的正式版，什么时候能发布呢？大佬给个时间点呗～

你们试过这个版本能用就发

昨天把项目升级测试了一下， <IP_ADDRESS>-SNAPSHOT 可以丝滑集成，暂时没发现什么问题

@linghengqian Thanks! The problem is solved, but still, waiting for a stable release of MP. Wish to become available as soon as possible.

使用queryWrap生成的sql有点问题
### The error may involve com.linkcld.fw.test.user.UserMapper.selectList
### The error occurred while executing a query
### SQL: SELECT  id,first_name,last_name,age,birthday  FROM user     WHERE (last_name = ?)
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT  id,first_name,last_name,age,birthday  FROM [*]user \000a \000a WHERE (last_name = ?)"; expected "identifier"; SQL statement:
SELECT  id,first_name,last_name,age,birthday  FROM user

 WHERE (last_name = ?) [42001-214]
; bad SQL grammar []

使用最新  3.5.3  版本


(updateauth, urgent) M to N mapping among key pairs accounts

Hi, I am not sure what is the root cause of this(snapshot tool or any other issue?)
Pre-condition : one of account uses nano ledger which is connected to MEW.
expected result : he can login to scatter with his EOS pub/private key pair and account name which are exactly same, comparing to search result from eosauthority.com.
On his registration before genesis snapshot, he received EOS pub/private key pair. So what he want is using that pair as others did. Even he had key pairs, it did not work due to mixed mapping.(explained as follows) As far as I heard, he has no fault on process.
Actual result :
He could not login and logs are as follows.

I do not know why eosio account change permission with eosio - updateauth log. I think there are mapping issue among accounts and key pairs. I intentionally expose account because it is public. If this is issue, then please let me know. I will remove that account. But without account name, there is no way to check this detail
details :
please check followings. They are very strange.
1. EOSAuthority with MEW public key

EOS public key starts with EOS7.... and account is "guzdonzugmge"
2. eosFlare.io with account name

still fine. Next we can see very weird things.
3. eosFlare.io with EOS public key

no associated account???

eosFlare.io with other address (founded from https://toolkit.genereos.io/tools, on searching, result varies)

there are four accounts with A key pair. Only one is his account name.
According to 4, there are 1 to 4 mapping between key pairs and accounts,
Also according to 1, 4, for account name "guzdonzugmge", there are 2 to 1 mapping between key pairs and accounts.
Thus, there are m to n mapping between key pairs and accounts (n, m >= 0, integer)

The registered key of the guzdonzugmge was EOS7x8pKfDqWUx6Ud2vsYu3b6NaE2xk2eHn84Nx1ZzHmcSk29ZJhL.
Then in block 15185, there was a transaction which changed the account's owner key to EOS8MiJQ5jsPmAiDMUCEkaemxvq5QE5ppc7ZDfuNgsc9ZY8bfp96k:
$ ./cleos get transaction<PHONE_NUMBER>f399c5604927dea37ba6116420237ce9a361fd975b9b6b0396b065
{
  "id": "7076995451f399c5604927dea37ba6116420237ce9a361fd975b9b6b0396b065",
  "trx": {
    "receipt": {
      "status": "executed",
      "cpu_usage_us": 603,
      "net_usage_words": 20,
      "trx": [
        1,{
          "signatures": [
            "SIG_K1_KZd2X8CpentC6YaoVfAC8tz1i9HQ8PYNekyy82JCXDxBWDgdx9neujUTjq5BmDELXMduSTiHTjBYVsfcpusbbBLqm8EMLX"
          ],
          "compression": "none",
          "packed_context_free_data": "",
          "packed_trx": "11221d5b273be27cd71700000000010000000000ea30550040cbdaa86c52d501a09864fa4f9abe660000000080ab26a743a09864fa4f9abe660000000080ab26a7000000000000000001000000010003c8e6e656c7317d77228a18c57e8131119fddc8aeb3930dea4633cbb3d686aae20100000000"
        }
      ]
    },
    "trx": {
      "expiration": "2018-06-10T13:05:21",
      "ref_block_num": 15143,
      "ref_block_prefix": 399998178,
      "max_net_usage_words": 0,
      "max_cpu_usage_ms": 0,
      "delay_sec": 0,
      "context_free_actions": [],
      "actions": [{
          "account": "eosio",
          "name": "updateauth",
          "authorization": [{
              "actor": "guzdonzugmge",
              "permission": "owner"
            }
          ],
          "data": {
            "account": "guzdonzugmge",
            "permission": "owner",
            "parent": "",
            "auth": {
              "threshold": 1,
              "keys": [{
                  "key": "EOS8MiJQ5jsPmAiDMUCEkaemxvq5QE5ppc7ZDfuNgsc9ZY8bfp96k",
                  "weight": 1
                }
              ],
              "accounts": [],
              "waits": []
            }
          },
          "hex_data": "a09864fa4f9abe660000000080ab26a7000000000000000001000000010003c8e6e656c7317d77228a18c57e8131119fddc8aeb3930dea4633cbb3d686aae201000000"
        }
      ],
      "transaction_extensions": [],
      "signatures": [
        "SIG_K1_KZd2X8CpentC6YaoVfAC8tz1i9HQ8PYNekyy82JCXDxBWDgdx9neujUTjq5BmDELXMduSTiHTjBYVsfcpusbbBLqm8EMLX"
      ],
      "context_free_data": []
    }
  },
  "block_time": "2018-06-10T13:04:41.500",
  "block_num": 15185,
  "last_irreversible_block": 252934,
  "traces": [{
      "receipt": {
        "receiver": "eosio",
        "act_digest": "ac872affc4c684fc0fef047b2443fec04a02ccf5ca36740c43966f57a721394d",
        "global_sequence": 2495175,
        "recv_sequence": 1163121,
        "auth_sequence": [[
            "guzdonzugmge",
            1
          ]
        ],
        "code_sequence": 4,
        "abi_sequence": 5
      },
      "act": {
        "account": "eosio",
        "name": "updateauth",
        "authorization": [{
            "actor": "guzdonzugmge",
            "permission": "owner"
          }
        ],
        "data": {
          "account": "guzdonzugmge",
          "permission": "owner",
          "parent": "",
          "auth": {
            "threshold": 1,
            "keys": [{
                "key": "EOS8MiJQ5jsPmAiDMUCEkaemxvq5QE5ppc7ZDfuNgsc9ZY8bfp96k",
                "weight": 1
              }
            ],
            "accounts": [],
            "waits": []
          }
        },
        "hex_data": "a09864fa4f9abe660000000080ab26a7000000000000000001000000010003c8e6e656c7317d77228a18c57e8131119fddc8aeb3930dea4633cbb3d686aae201000000"
      },
      "elapsed": 259,
      "cpu_usage": 0,
      "console": "",
      "total_cpu_usage": 0,
      "trx_id": "7076995451f399c5604927dea37ba6116420237ce9a361fd975b9b6b0396b065",
      "inline_traces": []
    }
  ]
}

Then, in block 20252, there was a transaction which changed the account's active key to EOS8MiJQ5jsPmAiDMUCEkaemxvq5QE5ppc7ZDfuNgsc9ZY8bfp96k also:
$ ./cleos get transaction 83fb88a4687b4b4b9920e922d2f50e2d58d133b5653419be903f05b238a53f81
{
  "id": "83fb88a4687b4b4b9920e922d2f50e2d58d133b5653419be903f05b238a53f81",
  "trx": {
    "receipt": {
      "status": "executed",
      "cpu_usage_us": 566,
      "net_usage_words": 20,
      "trx": [
        1,{
          "signatures": [
            "SIG_K1_K1TUS4DRh9BtfA4hU67D15vNyXdzUnwN1ETGGhZe9W5s7jzjUnJRsdHbLZTXPVn7MVVU5B5EVgp7HBkoCVBampyBS8CiMr"
          ],
          "compression": "none",
          "packed_context_free_data": "",
          "packed_trx": "01301d5b5f3b8fd544e900000000010000000000ea30550040cbdaa86c52d501a09864fa4f9abe6600000000a8ed323243a09864fa4f9abe6600000000a8ed32320000000080ab26a701000000010003c8e6e656c7317d77228a18c57e8131119fddc8aeb3930dea4633cbb3d686aae20100000000"
        }
      ]
    },
    "trx": {
      "expiration": "2018-06-10T14:04:49",
      "ref_block_num": 15199,
      "ref_block_prefix":<PHONE_NUMBER>,
      "max_net_usage_words": 0,
      "max_cpu_usage_ms": 0,
      "delay_sec": 0,
      "context_free_actions": [],
      "actions": [{
          "account": "eosio",
          "name": "updateauth",
          "authorization": [{
              "actor": "guzdonzugmge",
              "permission": "active"
            }
          ],
          "data": {
            "account": "guzdonzugmge",
            "permission": "active",
            "parent": "owner",
            "auth": {
              "threshold": 1,
              "keys": [{
                  "key": "EOS8MiJQ5jsPmAiDMUCEkaemxvq5QE5ppc7ZDfuNgsc9ZY8bfp96k",
                  "weight": 1
                }
              ],
              "accounts": [],
              "waits": []
            }
          },
          "hex_data": "a09864fa4f9abe6600000000a8ed32320000000080ab26a701000000010003c8e6e656c7317d77228a18c57e8131119fddc8aeb3930dea4633cbb3d686aae201000000"
        }
      ],
      "transaction_extensions": [],
      "signatures": [
        "SIG_K1_K1TUS4DRh9BtfA4hU67D15vNyXdzUnwN1ETGGhZe9W5s7jzjUnJRsdHbLZTXPVn7MVVU5B5EVgp7HBkoCVBampyBS8CiMr"
      ],
      "context_free_data": []
    }
  },
  "block_time": "2018-06-10T13:46:55.000",
  "block_num": 20252,
  "last_irreversible_block": 253211,
  "traces": [{
      "receipt": {
        "receiver": "eosio",
        "act_digest": "0bdff89795681956c903a865050d6f4a428897fa54dc2fb32d9baa39b8fb3781",
        "global_sequence": 2510568,
        "recv_sequence": 1171343,
        "auth_sequence": [[
            "guzdonzugmge",
            2
          ]
        ],
        "code_sequence": 4,
        "abi_sequence": 5
      },
      "act": {
        "account": "eosio",
        "name": "updateauth",
        "authorization": [{
            "actor": "guzdonzugmge",
            "permission": "active"
          }
        ],
        "data": {
          "account": "guzdonzugmge",
          "permission": "active",
          "parent": "owner",
          "auth": {
            "threshold": 1,
            "keys": [{
                "key": "EOS8MiJQ5jsPmAiDMUCEkaemxvq5QE5ppc7ZDfuNgsc9ZY8bfp96k",
                "weight": 1
              }
            ],
            "accounts": [],
            "waits": []
          }
        },
        "hex_data": "a09864fa4f9abe6600000000a8ed32320000000080ab26a701000000010003c8e6e656c7317d77228a18c57e8131119fddc8aeb3930dea4633cbb3d686aae201000000"
      },
      "elapsed": 257,
      "cpu_usage": 0,
      "console": "",
      "total_cpu_usage": 0,
      "trx_id": "83fb88a4687b4b4b9920e922d2f50e2d58d133b5653419be903f05b238a53f81",
      "inline_traces": []
    }
  ]
}

If neither of these transactions were signed by the legitimate owner of guzdonzugmge, then that is evidence that the private key corresponding to their registered public key (EOS7x8pKfDqWUx6Ud2vsYu3b6NaE2xk2eHn84Nx1ZzHmcSk29ZJhL) was compromised.
Later on, in block 49312, the active key of the account was changed again, this time to EOS6g7Je7nEZANZFMUur9ib3gF2fKkiDeS5eKWrexgRiHPq1KAzis:
$ ./cleos get transaction 65a0c2468b27a05f4b94062732a4bb0b3c1e328785c35a98a5b156b94cb88913
{
  "id": "65a0c2468b27a05f4b94062732a4bb0b3c1e328785c35a98a5b156b94cb88913",
  "trx": {
    "receipt": {
      "status": "executed",
      "cpu_usage_us": 823,
      "net_usage_words": 20,
      "trx": [
        1,{
          "signatures": [
            "SIG_K1_Kh5QnUkzcsE9fqeXNxhNNrifuEhgKn6y1mC6D3sqLyqBHSBHwk1CEuPfVHtih4ajdPEEnxYTFvBKWwLU9TAuL3MV82UaPG"
          ],
          "compression": "none",
          "packed_context_free_data": "",
          "packed_trx": "ae641d5b9dc093cfadb700000000010000000000ea30550040cbdaa86c52d501a09864fa4f9abe6600000000a8ed323243a09864fa4f9abe6600000000a8ed32320000000080ab26a701000000010002eb48136799673de1aa9c7d3d849ef818a29dbe84ea3ee10f00e72f95655f89590100000000"
        }
      ]
    },
    "trx": {
      "expiration": "2018-06-10T17:49:34",
      "ref_block_num": 49309,
      "ref_block_prefix":<PHONE_NUMBER>,
      "max_net_usage_words": 0,
      "max_cpu_usage_ms": 0,
      "delay_sec": 0,
      "context_free_actions": [],
      "actions": [{
          "account": "eosio",
          "name": "updateauth",
          "authorization": [{
              "actor": "guzdonzugmge",
              "permission": "active"
            }
          ],
          "data": {
            "account": "guzdonzugmge",
            "permission": "active",
            "parent": "owner",
            "auth": {
              "threshold": 1,
              "keys": [{
                  "key": "EOS6g7Je7nEZANZFMUur9ib3gF2fKkiDeS5eKWrexgRiHPq1KAzis",
                  "weight": 1
                }
              ],
              "accounts": [],
              "waits": []
            }
          },
          "hex_data": "a09864fa4f9abe6600000000a8ed32320000000080ab26a701000000010002eb48136799673de1aa9c7d3d849ef818a29dbe84ea3ee10f00e72f95655f895901000000"
        }
      ],
      "transaction_extensions": [],
      "signatures": [
        "SIG_K1_Kh5QnUkzcsE9fqeXNxhNNrifuEhgKn6y1mC6D3sqLyqBHSBHwk1CEuPfVHtih4ajdPEEnxYTFvBKWwLU9TAuL3MV82UaPG"
      ],
      "context_free_data": []
    }
  },
  "block_time": "2018-06-10T17:49:05.000",
  "block_num": 49312,
  "last_irreversible_block": 253556,
  "traces": [{
      "receipt": {
        "receiver": "eosio",
        "act_digest": "0ed75652ab863557cc47209b8df04c036abefb65a4856aa390fe1321142a7463",
        "global_sequence": 2563750,
        "recv_sequence": 1210849,
        "auth_sequence": [[
            "guzdonzugmge",
            3
          ]
        ],
        "code_sequence": 4,
        "abi_sequence": 5
      },
      "act": {
        "account": "eosio",
        "name": "updateauth",
        "authorization": [{
            "actor": "guzdonzugmge",
            "permission": "active"
          }
        ],
        "data": {
          "account": "guzdonzugmge",
          "permission": "active",
          "parent": "owner",
          "auth": {
            "threshold": 1,
            "keys": [{
                "key": "EOS6g7Je7nEZANZFMUur9ib3gF2fKkiDeS5eKWrexgRiHPq1KAzis",
                "weight": 1
              }
            ],
            "accounts": [],
            "waits": []
          }
        },
        "hex_data": "a09864fa4f9abe6600000000a8ed32320000000080ab26a701000000010002eb48136799673de1aa9c7d3d849ef818a29dbe84ea3ee10f00e72f95655f895901000000"
      },
      "elapsed": 251,
      "cpu_usage": 0,
      "console": "",
      "total_cpu_usage": 0,
      "trx_id": "65a0c2468b27a05f4b94062732a4bb0b3c1e328785c35a98a5b156b94cb88913",
      "inline_traces": []
    }
  ]
}

And in block 49575, the owner key of the account was also changed to EOS6g7Je7nEZANZFMUur9ib3gF2fKkiDeS5eKWrexgRiHPq1KAzis:
$ ./cleos get transaction df947a917b94cd048b80aa32890475f066ea6d29f0fecc089185cf60db3affe9
{
  "id": "df947a917b94cd048b80aa32890475f066ea6d29f0fecc089185cf60db3affe9",
  "trx": {
    "receipt": {
      "status": "executed",
      "cpu_usage_us": 677,
      "net_usage_words": 20,
      "trx": [
        1,{
          "signatures": [
            "SIG_K1_Ka8TQkHjP6KD5EZXANdCkZYjEVL9L3fcs2GisUwgwHxACmEwAAyS5ynP3h5yFpznKeMueLtujWCnBZxX54iZNMFu5yVn9o"
          ],
          "compression": "none",
          "packed_context_free_data": "",
          "packed_trx": "32651d5ba5c15045915e00000000010000000000ea30550040cbdaa86c52d501a09864fa4f9abe660000000080ab26a743a09864fa4f9abe660000000080ab26a7000000000000000001000000010002eb48136799673de1aa9c7d3d849ef818a29dbe84ea3ee10f00e72f95655f89590100000000"
        }
      ]
    },
    "trx": {
      "expiration": "2018-06-10T17:51:46",
      "ref_block_num": 49573,
      "ref_block_prefix":<PHONE_NUMBER>,
      "max_net_usage_words": 0,
      "max_cpu_usage_ms": 0,
      "delay_sec": 0,
      "context_free_actions": [],
      "actions": [{
          "account": "eosio",
          "name": "updateauth",
          "authorization": [{
              "actor": "guzdonzugmge",
              "permission": "owner"
            }
          ],
          "data": {
            "account": "guzdonzugmge",
            "permission": "owner",
            "parent": "",
            "auth": {
              "threshold": 1,
              "keys": [{
                  "key": "EOS6g7Je7nEZANZFMUur9ib3gF2fKkiDeS5eKWrexgRiHPq1KAzis",
                  "weight": 1
                }
              ],
              "accounts": [],
              "waits": []
            }
          },
          "hex_data": "a09864fa4f9abe660000000080ab26a7000000000000000001000000010002eb48136799673de1aa9c7d3d849ef818a29dbe84ea3ee10f00e72f95655f895901000000"
        }
      ],
      "transaction_extensions": [],
      "signatures": [
        "SIG_K1_Ka8TQkHjP6KD5EZXANdCkZYjEVL9L3fcs2GisUwgwHxACmEwAAyS5ynP3h5yFpznKeMueLtujWCnBZxX54iZNMFu5yVn9o"
      ],
      "context_free_data": []
    }
  },
  "block_time": "2018-06-10T17:51:16.500",
  "block_num": 49575,
  "last_irreversible_block": 253756,
  "traces": [{
      "receipt": {
        "receiver": "eosio",
        "act_digest": "18f5b901b82b4fd05c93ba4c73fc9bbffa394a8255fb016cb384c99cfa9f359b",
        "global_sequence": 2564108,
        "recv_sequence": 1211141,
        "auth_sequence": [[
            "guzdonzugmge",
            4
          ]
        ],
        "code_sequence": 4,
        "abi_sequence": 5
      },
      "act": {
        "account": "eosio",
        "name": "updateauth",
        "authorization": [{
            "actor": "guzdonzugmge",
            "permission": "owner"
          }
        ],
        "data": {
          "account": "guzdonzugmge",
          "permission": "owner",
          "parent": "",
          "auth": {
            "threshold": 1,
            "keys": [{
                "key": "EOS6g7Je7nEZANZFMUur9ib3gF2fKkiDeS5eKWrexgRiHPq1KAzis",
                "weight": 1
              }
            ],
            "accounts": [],
            "waits": []
          }
        },
        "hex_data": "a09864fa4f9abe660000000080ab26a7000000000000000001000000010002eb48136799673de1aa9c7d3d849ef818a29dbe84ea3ee10f00e72f95655f895901000000"
      },
      "elapsed": 287,
      "cpu_usage": 0,
      "console": "",
      "total_cpu_usage": 0,
      "trx_id": "df947a917b94cd048b80aa32890475f066ea6d29f0fecc089185cf60db3affe9",
      "inline_traces": []
    }
  ]
}

Has the owner of the guzdonzugmge account input the private key corresponding to EOS7x8pKfDqWUx6Ud2vsYu3b6NaE2xk2eHn84Nx1ZzHmcSk29ZJhL in any wallets, tools, or websites? If so, which ones?
A similar pattern is followed with the other three accounts: g44tqnrzgyge, gyztkojrgige, and haytanjtgige. I sincerely hope all four of these accounts originally belonged to the same person and that all these permission updates were legitimate and intentional. Otherwise, it strongly suggests (although unfortunately does not and cannot prove) that a hacker compromised their registered keys.

Hi, I am owner of ‘guzdonzugmge‘, as far as i remember i did not expose my private key until yesterday morning.  I try to use it to vote through Scatter(checked extension ID)and things went wrong.  Before that since my EOS was in the hard wallet, i’ve checked my balance through MEW with my ethereum address which also is in the Hard wallet.  Please let me know if you have any other questions.

One thing i don’t really understand is that my private key still pairs with my public key on some tools providing correct balance.

@SoBaD08: And what tool did you use to generate your original EOS public/private key pairs?

It wasn't a tool, i've got it from EOS.io through registration process where it provides EOS public key and private key which i registered using my ethereum address.  I've just checked my transaction and the first one was done on Feb 13th, 2018.

And have you verified that when you import your private key into a wallet that it does in fact map to your original public key of EOS7x8pKfDqWUx6Ud2vsYu3b6NaE2xk2eHn84Nx1ZzHmcSk29ZJhL and not some other public key?
If you got the public/private key pair from eos.io, registered it properly, kept the private key safe, and did not ever use it until after 2018-06-10T17:51:16 UTC, then I have run out of ideas to explain how this could have happened.
Perhaps arbitration will be able to help you. Try checking out the EOS 911 Telegram. I don't know if it will help, but it is worth a shot.

Yes, here I just did it again and attached an image.

I did report EOS 911 already.
And I thank you very much for your help and attention.

One thing is still not clear. Even someone knows private key, how he can use signed transaction or cleos console command? If he do that, that meant he could access BPs server.

And one more original question, using cleos, someone can map same eos public key to different accounts? Is there any checking replication procedure?
Then this can happen again and this can cause same problem even though he or she does not have bad intension. Am I wrong?

Hi, I may have the same problem. Can anyone check that for me, since I am not an expert using these tools? I did not expose my private key before 11th of June.
The original EOS account I saved: EOS8HE9yuMyHfuMF1fciMxjJPWjsZJAozFcZ7bugefLUrUuxm2KT1
The EOS public key that has the tokens on mainnet: EOS5XgTZxkeJEUYEBPJRggsRQagTc9UTjp6yjexdhzzdEkTXoXaXk.
Thank you.

Something different case. According to log, there is no malicious action. Did you check your public key om genesis snapshot csv file?

Yes it contains the account shown on mainnet. The account I saved is nowhere.

I think there is a possibility that when you was generating EOS keys from eos.io, there was some script injection happening then. Browser extensions can easily do thing like that. Could you share the extensions you installed in your browser that you used to generate the keys?

Did you download Scatter (Chrome extension) from the correct website?
It should direct you to go to Chrome Store like this?
https://chrome.google.com/webstore/detail/scatter/ammj....jkle

@JohnnyZhao and @NghiaSE If you are asking me, I used the scatter 2 days ago for the first time and I've check the ID to make sure it is proper extension.

This is done by smartcontract which freeze EOS account. Thanks for your considerations.


Why we need Decred: An inclusive approach to sound money

Why we need Decred: An inclusive approach to sound money

What is sound money, and how is it related to Bitcoin? Why do traditional currencies lose value over time? Can we automate politics out of monetary policy making, but retain a structure for coordination and governance?

Abstract: This research paper outlines how Bitcoin is a rethinking of traditional currencies. Readers will learn how currencies are a form of monetary sovereignty, and how different schools of economics and governance shape the world's leading reserve currencies. By studying the Euro, the US Dollar, and the IMF's Special Drawing Rights, this paper articulates a framework to understand how Decred is a unique cryptocurrency which builds on the economic properties of Bitcoin with additional means of cooperation and conflict resolution. As a key takeaway, readers will learn how Bitcoin is more than money, and Decred is more than Bitcoin.

Table of Contents

Currencies are a form of sovereignty
A quest for Sound Money: Keynesian Economics vs Austrian Economics
Currency Governance: Examining the decision making processes in the Euro, the US Dollar, and the IMF Special Drawing Rights
Bitcoin is a transformative innovation over traditional currencies, but it lacks clear governance
Decred builds on Bitcoin's design with a more inclusive approach to sound money
Decred is still nascent - Weaknesses, misconceptions and opportunities for the future**

Currencies are a form of sovereignty

What is money, anyways? Our older ancestors used precious stones and metals as money, and until a few generations ago, our government money had to be backed by gold. Since the 1970s, the world has used a system of fiat currencies which are backed by government promises, rather than an intrinsically valuable commodity.
Today, the United Nations recognizes 180 different currencies in 195 nations around the world. Most countries issue their own currencies, even as economists acknowledge that sharing common currencies leads to reduced transaction costs. This is because having your own national currency allows us a form of monetary sovereignty, rather than having to depend on the currency issued by a different country. As an example, 90 percent of Canada's population lives within a 100 miles of the US border, but Canada issues its own currency, the Canadian Dollar.
While most countries issue their own currencies, the Euro and the US Dollar have been adopted by multiple countries as official legal tender. As of 2020, the Euro is the official currency of 19 European nations, and the US Dollar is the official currency of 7 countries. The wide adoption of these two currencies also makes them ideal candidates to be held in the reserves of other central banks. The majority of countries around the world have also agreed to constrain their monetary sovereignty by agreeing to abide by Articles of Agreement of the International Monetary Fund. In essence, they have traded off monetary sovereignty in exchange for "international cooperation and for the common good of all".
When countries in the Eurozone ceded their monetary sovereignty to the European Central Bank, they did so after establishing a framework of retaining voice at the ECB governing table. Similar means of governance exist at the IMF, which will be unpacked later in this paper.
With the advent of cryptocurrencies, we now have digitally native alternatives to our traditional currencies which are no longer bound by our offline borders. Software is eating the world, and cryptocurrencies allow us to program monetary policies so that they are not susceptible to local politics. This opportunity also comes with questions about the ideal characteristics of money as a product, with differing approaches to monetary economics.

Keynesian Economics vs Austrian Economics - in search of sound money
Is it better to save, or to spend? Depends on who you ask. Some economists believe in consumption, while others believe in savings and production. These theories of money make tradeoffs to design the ideal characteristics of money.
Keynesian economists believe that consumer spending, guided by government coordination and light inflation is the key to economic progress. A key premise in Keynesian school of thought is that if people know their currency will be worth less in the future, they will be more incentivized to spend money today, which will lead to greater money circulation. This school of thought dominates global economics today, and even our economic measures like GDP use spending as a proxy for national prosperity.
If Keynesians are spenders, Austrian economists are savers. Austrians believe that money should retain its value over time, and political interventions in monetary policy leads to short term bubbles and longer term losses.

Nobel laureate Freidrich Hayek compared government monetary creation to the pouring of honey in a cup. The honey tends to clump in the center, and unevenly trickle out to the outer ridges.

When central banks are able to increase the money supply at will, the value of the currency inherently loses purchasing power. We don't realize this right away, but over time, this leads to price inflation in everything we buy. Rising asset prices benefit the people who hold capital investments, but life becomes more more expensive for those who live on cash savings.
Inflation distorts our ability to measure prices over time, and disproportionately harms the poor. But our currencies don't always have to lose value over time. Advocates of sound money believe that a stable currency would lead to societal prosperity, as our savings would be protected from debasement. Over time, a change in prices would come not from currency supply increases, but from productivity gains realized by technology.
The concept of sound money may be new to many people, because we've lived our entire lives under a system of fiat currency with central banking oversight. But life wasn't always like this. Seen under a historical economic lens, central bank oversight with fiat currencies is a relatively recent phenomena, which has also coincided with history's largest bouts of hyperinflation:

Over the last century, even the US Dollar (the world's strongest national currency) has lost more than 95 percent of its value due to inflation. Because our money loses value, we are incentivized to move our net worth out of cash. This has given rise to a culture of consumption, as well as complex financial providers who extract fees in exchange for protecting against inflation.
Sound money is a money which is not subject to inflation and supply fluctuations. To most 19th century writers, sound money is synonymous with gold, because of its well known scarcity and durability. At any given time, there is only a finite amount of gold that ever exists on earth, and most of the gold mined in history still exists today.
Where sound money optimizes for value and price stability, fiat money enables greater national economic coordination. By retaining a voice over their monetary policy, nations are able to fund social programs, which can especially helpful during economic downturns.
Understanding the coordination frameworks for the world's leading currencies can offer us valuable insights about the role of governance in our economic institutions.

Comparing the role of governance in the Euro, the US Dollar, and the IMF Special Drawing Rights
The Euro:
The Euro is the best known modern supranational currency, where a single unit of account is the legal tender for multiple nations.

The concept of monetary union among European countries has been explored since the 1960s, but it wasn't until early 1990s that an  alliance of European countries proposed that a common currency would remove the exchange rate barriers to cross border trade, and provide more free flowing coordination. The European Central Bank was formally created in 1999, which formalized the creation of the Euro as a single currency which is now the legal tender for 19 countries.
When Eurozone countries ceded Monetary policy to the ECB, they did so with the implementation of a means of governance. The ECB Governing Council is the main decision-making body of the Euro. It consists of
the six members of the ECB Executive Board, plus
the governors of the national central banks of the 19 euro area countries

Voting power in the European Central Bank reflects those with the most skin in the game:
While the Euro is the adopted currency of 19 countries, the voting power of the ECB does not follow a 'one person one vote' framework. The governing powers of ECB countries are divided into groups according to the size of their economies and their financial sectors.

Voting power in the ECB Governing Council reflects the national economies with the most skin in the game.

For decision making in the ECB Governance Council, the Governors from the 5 largest economies - currently, Germany, France, Italy, Spain and the Netherlands - share four voting rights. The 14 other countries share 11 votes, where their governors rotate turns on a monthly rotation. On a monthly basis, consensus is reached after voting as follows:
· The 6 members of the ECB Executive board each casts 1 vote
· The 5 biggest countries take turns sharing 4 votes
· The 14 smaller countries take turns sharing 11 votes
How voting rights rotate on the ECB Governing Council
The accession of Lithuania as the euro area's 19th member state as from the beginning of 2015 will trigger a new voting…www.bundesbank.de
The Governors of the ECB meet to set interest rates, monitor the money supply, and assess how participating populations can enhance their economic coordination. A similar framework also exists in the United States.

The US Dollar and the Federal Reserve:

While the Euro is governed by the ECB, the US Dollar is governed by the US Federal Reserve. Much like the ECB has a governing council, the Fed's monetary policy is governed by the Federal Open Market Committee (FOMC). The FOMC has 12 voting representatives:
7 board members of the Federal Reserve System (appointed by the US President with the approval of the Senate).
5 members are presidents of the twelve regional reserve Banks.
Much like the five largest countries enjoy preferential voting treatment in the European Central Bank, the New York Fed also enjoys a preferential treatment in the form of a permanent voting status, owing to New York's central position in American finance. The presidents of the remaining 11 regional federal reserve banks share 4 votes on a rotating basis.
The US Dollar is the current reserve currency of the world, and most trade is conducted in dollars. When the 12 members of the FOMC make monetary policy decisions, they also inherently have governance rights over the foreign exchange reserves for every other country holding the US Dollar. To address this inherent conflict of interest, and to supplement the global supply of dollars, in the 1960s the IMF created the Special Drawing Rights.

The Special Drawing Rights - an international reserve asset

While the Dollar and the Euro are universally known, the general population is not as well versed in the Special Drawing Rights (SDR). That's because unlike the Dollar or Euro, the SDR is not a retail currency. It is an international reserve asset comprised of a basket of leading currencies. Instead of being used by everyday people, the SDR is the common unit of account for various international organizations, most notably the International Monetary Fund.

The SDR is derived from a basket of the world's most important currencies, currently the US dollar, the euro, the yen and the pound sterling.

The currencies which makeup the SDR are a proxy for the influence of the largest economic influences in the world. The basket is reviewed every five years to ensure that it reflects the relative importance of global currencies and financial systems. Deriving the SDR value from a basket model helps manage against exchange volatility in any single currency.
SDRs were introduced in the late 1960s as a common global reserve asset, with their value being pegged to gold via the US dollar under the Bretton Woods system. The US ending its dollar convertibility into gold lessened the importance of the SDRs in global economics.
Today one of the main functions of the SDR is to serve as a unit of account for the International Monetary Fund (IMF), the Bank for International Settlements (BIS), Arab Monetary Fund, African Development Bank, and the Islamic Development Bank. A few countries also peg their currency to the SDR.
Special Drawing Rights Governance - Voting power with skin in the game

"Unlike the General Assembly of the United Nations, where each country has one vote, decision making at the IMF was designed to reflect the relative positions of its member countries in the global economy. Each IMF member country is assigned a quota that determines its financial commitment to the IMF, as well as its voting power." - International Monetary Fund.

The quota of SDRs held by countries reflects their voting powers at the IMF. In this manner, the IMF is similar to the Euro in approximating governance rights with skin in the game.
In addition to governance rights, the SDRs also bear interest. When a country holds more SDR than its allocated IMF quota, it receives interest on these holdings. In this sense, the SDR is unique. While it lacks the global utility of traditional currencies, it offers additional dimensions of global cooperation, and rewards users which participate in the currency.
When members of the International Monetary Fund have differences of opinion, they are able to exercise their voices by means of voting system. As we've studied above, these voting systems aren't necessarily in a 'one person one vote' structure - they recognize that some parties have bear more risk in the system.
While currencies like the Euro, the Dollar and the SDR provide us with institutions to govern the global economy, their decision making powers are concentrated to a handful of mostly unelected delegates. Most importantly over the long term, while our existing currencies provide us with means of cooperation, fiat currencies are subject to debasement and political influence. This is why Bitcoin is such an economic innovation.

Bitcoin - A Digital Sound Money

"We don't need a Fed.  I have, for many years, been in favor of replacing the Fed with a computer"
 Milton Friedman, 1999

Peter Thiel likes to say that there are 'zero to one' moments where we discover a truly new innovation. Bitcoin is such an invention.
Prior to 2008, there were many unsuccessful attempts at Digital cash, but the Bitcoin protocol is the first one that actually works without requiring a central facilitator. Even as we spend more of our lives online, prior to Bitcoin, every online transaction had to be settled using inefficient inter-banking arrangements, in currencies dictated by offline borders.
The invention of Bitcoin introduced the first borderless digital money which can be transferred peer to peer anywhere, without requiring any intermediaries. It can hard to immediately comprehend the degree of innovation of Bitcoin, because it goes much further than a digital cash. The Bitcoin protocol also eliminates the need for correspondent banks to settle transactions, and the need for central banks to govern monetary policy.

When you send a wire to someone across the world, the money needs to hop across different correspondent banks before reaching your intended recipient, who likely has to wait a couple of days and incur foreign exchange fees in order to use the money in a different country. This changes with the advent of Bitcoin and cryptocurrencies, where money can now be exchanged directly between people without requiring a trusted third party.
In the coming years, traditional banks will incorporate blockchain technology to make their transaction settlements more efficient, but the currencies being transmitted through these new rails will retain the same inflationary designs of the last 100 years.

Building blockchain technology as a payment rail for legacy fiat currencies is like building roads and highways to ride horses. Technology rewards us when we embrace the potential of the future, not when we recreate the past.

Bitcoin reimagines money for the digital age, and also solves for inflation. Unlike fiat money, which can be printed at will, Bitcoin is programmed to be provably scarce. Bitcoin has a pre-determined monetary supply that is more scarce, divisible, and portable than our existing currencies. These characteristics makes Bitcoin a candidate for a new form of sound money - similar to a digital gold.
Much like gold is an apolitical physical commodity, Bitcoin aims to be an apolitical digital commodity. But Bitcoin is not just a physical commodity, it is also a software and a global network of voluntary users. Over time, these users will need to agree on approaches to upgrade this public infrastructure. Someone will need to type up new lines of code, someone else will need to review it, and as the network grows, users will need a means for dispute resolution when there are diverging viewpoints on any implementation.

Bitcoin users may not need to debate monetary policy, but they will need to agree on upgrades to Bitcoin as a software product.

Sound money needs to be durable, and the lack of a defined software upgrade process represents a long term risk for Bitcoin. In the near to midterm, Bitcoin's lack of defined governance can be considered a positive feature, as it stabilizes the protocol from major code changes. But software upgrades are an inevitability, not an option. The process for change doesn't have to be undefined - it just needs to be methodical, and require a high bar of approval to ensure stability.
While our traditional currencies and financial systems are vulnerable to despots and depreciation, they provide us with a means of coordinating our voices. The lack of decision making framework represents a social threat to Bitcoin, as the currency does not provide its users with the same expression of voice provided by legacy institutions. If you don't agree with a change in Bitcoin, the only means of dispute resolution is for users to exit the network.
The Bitcoin network has already seen community splits over different approaches to transaction settlement, and is poised to have contentious debates around privacy rules in the coming years. This is where Decred shines.

Decred - An inclusive sound money
So far, this paper has examined money as a form of sovereignty, the pros/cons of central bank issued currencies, and an overview of how Bitcoin transforms monetary policy making and the legacy interbank settlement process.
Decred is the same rabbit hole as Bitcoin, except its design extends in additional dimensions. While most cryptocurrencies are cheap imitations of Bitcoin, Decred specifically innovates in vectors not covered by Bitcoin's design.

The 2008 creation of Bitcoin enabled a permissionless digital economy where anyone can exchange value, and where users are provided sound money guarantees against inflation. The 2016 innovation of Decred retains these same principles, and innovates in additional dimensions by empowering users with voice, and by solving for an ability to self finance an ecosystem without needing external investors.
With Decred, we now have a means of retaining monetary hardness, while acknowledging that software products need a process for upgrades. More importantly as a monetary instrument, Decred not only provides the assurances of a sound money, it also provides users with a sovereign voice.
Decred is a rethinking of the global economy from a system of fragmented currencies to a shared cooperative.
Decred was launched in 2016, with an explicit intent to extend the Bitcoin ethos of a global decentralized economy. It is a cryptocurrency like Bitcoin, but Decred acknowledges a difference between economic malleability and technology malleability. Like Bitcoin, Decred also has a capped max supply of 21 million units, where each unit is divisible into 1 million decimal points.
Decred doesn't yet have the brand recognition of Bitcoin, but it is also very young. In terms of mined supply, Decred today is akin to Bitcoin in 2013.

Like Bitcoin, Decred doesn't need central bank committees to debate monetary policy making. But while Bitcoin and Decred share economic similarities, they differ in the amount of voice afforded to the users of their currency.
Bitcoin's design is similar to that of a digital gold. Decred's design is something like a shareholders right on a digital gold.
Where Bitcoin's design is apolitical and vague, Decred's design embraces the fact that a sound programmable money needs to be both sound and programmable. More specifically, Decred automates politicking out of monetary policy making, but retains a framework for coordination and governance. It's a currency without a single owner - a community where decision making is determined by distributed ownership.

"In complex domains, expertise doesn't concentrate: under organic reality, things work in a distributed way, as F. A. Hayek has convincingly demonstrated… All we need is structure.
It doesn't mean all participants have a democratic share in decisions. One motivated participant can disproportionately move the needle…But every participant has the option to be that player.
Which is why Bitcoin is an excellent idea. It fulfills the needs of the complex system, not because it is a cryptocurrency, but precisely because it has no owner, no authority that can decide on its fate. It is owned by the crowd, its users…For other cryptocurrencies to compete, they need to have such a Hayekian property."

Nassim Nicholas Taleb, January 22, 2018.
Nassim Taleb wrote the above words as a forword for The Bitcoin Standard, one of the most well known Bitcoin books to date. Arguably, these comments more closely describe Decred.
Decred has no single owner - It is owned by the crowd.
Where traditional currencies are governed by central banking committees, Decred is governed by the public. In many ways, Decred combines the economics of Bitcoin with governance structures similar to the original ambitions of the Special Drawing Rights.
Like the Special Drawing Rights, Decred assigns governing rights to those who have the most skin in the game. But where SDRs are limited for use by international institutions, Decred is a digital public currency that is open to all. Where the SDR uses a basket of currencies to come up with an asset value, Decred has a native currency, $DCR. The SDR basket suffers from a politicization problem, where every 5 years there is lobbying amongst countries (most recently by China) to reshuffle the currency basket in their favour. Decred's design throws out the proxy basket model, and replaces it with a new currency altogether.
Until now, a history of human governance models relied on kingdoms and delegated leaders. For the first time, we have a model of economic governance where every individual is free to participate in a global decision making process. In addition to giving input into the evolution of the software, Decred holders also dictate the allocation of the currency's treasury fund.
Decred is a currency with its own reserves.
One of the most interesting innovations for Decred is its ability to fund its own treasury. At a time of populism when international organizations often bicker about contributions to collective funding, Decred is a financial network which never needs outside funding.
In my 2019 paper "An Alternative Contender", I studied how the Treasury Fund is funded by directing a portion of $DCR mining rewards towards a community pool, and how this pool has the potential to become a war chest in the future. As long as someone around the world is willing to mine $DCR, the treasury will continue to fund itself.

Self sustenance is a pre-requisite for any decentralized currency to succeed long term. Yet most cryptocurrencies rely on external investors to fund their development. Self funding can never be added to Bitcoin, and it will always remain dependent on voluntary donations. This may not be an obvious risk today, but a lack of community governance and a lack of self funding are two dimensions that will never be a part of Bitcoin's design.
On the contrast, Decred is designed to be self sustainable. Having a treasury means the Decred protocol can invite developers and community contributors without being bound to external interests. Longer term, this also prevents a risk where a shared commodity succumbs to a tragedy of the commons.
Decred is also designed to reward loyalty. If you are willing to hold Decred for up to 128 days, you can participate in the Decred staking process. This means you can earn a staking yield on the currency, somewhat similar to how the SDR pays an interest as a reward for holding quotas. This staking reward will go down over time, which is designed to reward the early adopters who take on the most risk. More than half of the $DCR mined to date are locked into its governance staking system, which shows early signs of a product-market fit. It's statistically significant for this many users to lock up their $DCR for months at a time, knowing that cryptocurrency prices fluctuate on a dime.
Decred now has a track record of 4 years. It may not yet have the brand recognition of other currencies, but it innovates in dimensions not covered by alternatives.

Weaknesses, Misconceptions and Opportunities for the future:
1. Decred still has low brand name recognition, and it can be complex to understand: The biggest near term challenge with Decred is its lack of mainstream awareness. While Bitcoin (and to a lesser extent Ethereum) have gained global recognition, Decred's awareness is concentrated in cryptocurrency circles. Most of the world is only beginning to understand the value proposition of Bitcoin, and Decred's value prop is a deeper extension of that rabbit hole. Bitcoin innovates on fiat currencies, and Decred innovates on Bitcoin. This thesis will take a long time to play out, and we are very early.
2. $DCR is not liquid enough to be a global currency: Decred's nascency shows up as a lack of liquidity for $DCR. Per coinmarketcap, for 2020 YTD until May, the Bitcoin network facilitates 400–500 times more daily volume than the Decred network, and the market values $BTC at 800–1000 times higher than $DCR. Decred is listed at a fraction of the exchanges compared to Bitcoin, but it is building an alternative path to liquidity. Until now, cryptocurrency exchanges have acted as the match makers for cryptocurrency buying and selling. Decred is building a public Decentralized Exchange ("DEX"), where any cryptocurrency can be interchanged with $DCR, without experiencing transaction costs. Interoperability is a precursor for liquidity, and Decred is charting a long term approach. With the amount of $DCR being staked, it is also possible that Decred never reaches that of Bitcoin.
3. Regulatory risk: This risk applies to most cryptocurrencies, but it's worth noting that Decred hasn't passed the same regulatory scrutiny that Bitcoin has. The US Securities and Exchange Commission (SEC) has already ruled that Bitcoin is not a security, and Decred would benefit from such reassurance. Decred's design is unique in that it is more than a traditional currency - it also offers interest yield, and provides governance rights over a shared community collective. Decred may need to draw parallels with the Special Drawing Rights to show how currencies can be more than utility tokens. If Decred were to become a serious alternative to national currencies, an regulator may try to enact adversarial laws to limit its adoption. It is also worthwhile to note that offline laws can't shutdown the Decred network. As long as it is profitable to mine the $DCR, someone somewhere will continue to support the Decred network. This resilience may ultimately be Decred's best defense over the long term.
4. The rich hold the most sway: This is a misunderstanding that is important to unpack. It's true that Decred rewards voice to those who hold the most $DCR, but the governance process is much more nuanced than this. Let's examine how Decred solves for a risk of concentration of power:
- Dilution of the early holders: The rich don't just get to keep their voice. As more Decred gets mined, the voice of the early holders get diluted. This process will continue until all 21M $DCR has been mined, which will take place over many decades. This dilution ensures a check and balance to eliminate the privileges of early Decred holders. If the early adopters want to hold onto their voice, they will need to buy back in alongside everyone else.
- Skin in the game: Skin in the game is a necessary practice to ensure a fair distribution of risk. Decred's method of governance makes it transparent to rewards measurable risk in its ecosystem. Most importantly, governance is open to all. This paper analyzed how our existing currency governance structures are already structured around skin in the game. Decred makes this processes fairer, because voting power is no longer limited to a small group of delegates. Anyone has a chance, if they're willing to take on risk.
- High thresholds for consensus: One of the biggest features of Decred's governance system is that it's not enough to hold the most $DCR.   A super majority of the ecosystem needs to agree. Stability is an important feature for a sound currency. Decred's design makes it possible to change, but difficult to do so. Decred's governance structure requires super majority approvals from the holders of the currency, as well as those who have invested in mining hardware.  In some ways, this governance structure is similar to that of the IMF, where major decisions require an approval from 85% of its members.
5. Distributed global governance is a new experiment. Global direct governance is a rethinking of so many of our existing societal structures. Bitcoin unbundles our offline institutions from governing an online money. Decred rebundles money and governance, in a digitally native state. This will have profound implications, including losing some of our existing national safety nets. Ultimately, decentralization empowers more people, but this progress comes with uncertainty and bumps. As society, the coming decades will be analogous to the advent of the printing press. In ancient times, literature was limited to printing by select decree. The spread of the printing press and eventually the internet have made it possible for anyone to share information with the world. This process has empowered more people with a voice than ever in before, but as social media has proven, too many voices can also create noise. Over the coming decades, the decoupling of money and the nation state will result in entirely new norms and structures.  Decred gives us a structure for organizing around a shared digital economy, but we don't yet know what those structures will end up looking like.

Conclusion:
Our money is rapidly transforming from from physical to digital format. Once all currencies are digitized, online money will decouple from offline borders. Bitcoin has captured mainstream attention as a decentralized digital inflation-proof money, and Decred extends this design further. If Bitcoin is a digital sound money, Decred is sound money with voice.

hi @ammarooni, great reading!! leaving some comments and observations:

there is a "and" missing here: "but life becomes more more expensive for those who live on cash savings."
I'm very rusty from my days in university but I think this paper has loads of potential for a peer reviewed article, I think there are sources missing and I would bomb this paper with sources (me putting sources on my dissertation)
this paragraph makes it quite balanced: "Where sound money optimizes for value and price stability, fiat money enables greater national economic coordination. By retaining a voice over their monetary policy, nations are able to fund social programs, which can especially helpful during economic downturns.", cryptocurrencies are not a panacea but they put answers/questions that we never thought before

Best!


Generic types with multiple parameters can have two different types with the same TypeUuid

Bevy version
Commit 9f51651eacddc2267f88a3b1a44af1ef58ec5d73
What you did
If you have a generic type with multiple parameters, if the deriving types have the same parameters but in different orders the TYPE_UUID will be the same.
#[derive(TypeUuid)]
struct Foo<T, U>;
assert_ne!(Foo::<T, U>::TYPE_UUID, Foo::<U, T>::TYPE_UUID); // fails

What went wrong

Expected different TYPE_UUID's but they are the same.
This is due to the fact the TYPE_UUID's are the XOR of the params' types, and so even if they are XOR'd in different orders the result will be the same.

Additional Information

can be fixed by #6633

That's a good point. When I saw that I wondered why that is, and now I think I get it. The problem is that in one case we have right associativity and in another we have left
The cases are 1.
C<A<B>> == C<B<A>>

which expands with right associativity like
A<B> = f(A, B)
C<A<B>> = f(C, f(A, B))

and 2.
C<A, B> == C<B, A>

which expands with left associativity like
C<A, B> = f(f(C, A), B)

with case 2 we expand like:
C<A, B> = f(f(C, A), B)
= C ^ r(A) ^ r(B)

therefore
C<B, A> = C ^ r(B) ^ r(A)

and so this fails as
C ^ r(A) ^ r(B) == C ^ r(B) ^ r(A)

What's the solution? Well we can

Do what I did in #6633 and wrapping_add the index of the parameter to the uuid or
change the expansion of case 2 to right associativity
I did the first solution as it seems simpler.


Default file manager options not in settings

Hi Files team,
I installed Files app on a Dell XPS 15 and going into the experimental settings the "Default file manager" options is not in the menu.
I have unninstalled and reinstall the app making sure I have the latest update but still the no change.

This is an issue for the app repo, not the website repo, and yet - the option was removed because there was no way to revert it when uninstalling the app.

The option still appears in my desktop and secondary laptop

All working now. Thank you for your quick answer 👍

Yes, that's what I did after you mentioned the website repo. It work like a charm :) Thanks


fix(repeat): preserve Subscriber chain in repeat()

Fix repeat() operator to add its own Subscriber to the destination Subscriber, in order to avoid
breaking unsubscription chains.

Merged with d9a7328... thanks @staltz


URLhashListener issue with current slide

Hi,
I wanted to have a contents page, which allows the user to jump to the desired slide on click.
so i enabled the URLhashListener : true
Then the url of slide 1 is #1, slide 2 is #2 and so on..
But, if i am looking at domain.com/#1
and then the user flicks through the slides using drag, or using the prev/next buttons, and then clicks on #1 again - it doesn't ump back to slide 1.
This is actually present on the demo:
http://www.owlcarousel.owlgraphic.com/demos/urlhashnav.html
Click on #zero, then click the dots to cycle through the slides, then click #zero again - nothing happens.
Any ideas a way to get round this?
Thanks!
Andy

I think the idea would be for the url hash to update automatically when the slide changes, rather than on click? no idea how to do this though!

Try with a more recent version of Owl Carousel. Commit 83e125877d923b3d55f20fd0f7befb015321f99a added code to update window.location.hash when the a slide is changed. This means dragging or clicking the dot navigation to go to slide 2 would change the hash to #2, and clicking any other link should take you to the appropriate slide.
I checked, and the copy of the Owl Carousel library used on the http://www.owlcarousel.owlgraphic.com/demos/urlhashnav.html demo page is older than this commit.

@thirdender :+1:
@getandyjones This is fixed in the most recent version. You can get it from bower or download from http://smashingboxes.github.io/download/owl.carousel.2.0.0-beta.3.zip
The project changed hands a few months ago and we're [unfortunately] still in the process of changing over our docs to a different host. http://smashingboxes.github.io/OwlCarousel2/demos/urlhashnav.html has the most recently released code up there and doesn't have this problem.

Sorry, a good url for download is http://smashingboxes.github.io/OwlCarousel2/download/owl.carousel.2.0.0-beta.3.zip, not the one I posted above :(

That' great - thanks!!!! :)


Rollup.js livereload's code is include to scsaver.js

If you write the livereload setting in rollup.config.js, the unnecessary livereload code will be included in the Scsaver.js code.
Is it possible to separate options for development and build?

Options:
https://www.npmjs.com/package/rollup-plugin-livereload


[ICON REQUEST]

Describe the solution you'd like
A clear and concise description of the icons.
Any similar icons in this project?
Additional context
Add any other context or screenshots that may help.

no information provided


implement server-server http cross-post

should be easy enough, and help a lot in Heroku-Heroku messaging performance

done


Refactor duplicated code in emoji reactions frontend

See https://github.com/zulip/zulip/pull/2633#pullrequestreview-14800110 for a couple places where there's significant duplicated code that we should extract into functions.

I will have a look into this.

@tommyip If you are not working on this then I am taking up this one. :)

@HarshitOnGitHub Sure go ahead, I didn't get too far on this.

Fixed via #3562.


Not unique id's for input fields

It seems that the id's of the input fields not are unique enough.
E.g. I have a textbox with alias transportName, therefore it use id="transportName" and for="transportName" on the label.
But because it is used for each item in the list, it will only focus on the first "transport name" input. Furthermore it might be an issue if there actually was added a property to the node with alias transportName.
So make it more unique, e.g. something like:
nested-{{alias}}-{{$index}}

I'm pretty sure this is outside our control as we don't control the rendering of the input fields, we just offload it to the relevant property editors view so this is ultimately something that would have to be done in the wrapped PE (I think it would be a bad idea for NC to attempt to modify this within our own logic as it could have adverse effect if someone relies on the format of an ID in their PE)

Yes, you are right Matt.
There was a similar issue with Archetype, but they use its own directive..
I took a look at the source code and see Nested Content use umb-property and umb-editor directives..
So it should probably be fixed here and some other places..
https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html
I am not sure if there is something to check each level like with nedsted ng-repeat,  where e.g.child can access parent index.

Closing this off, as it's beyond the control of Nested Content.
This is something that should be raised with Umbraco core team for consideration.