johnlindquist / kit Goto Github PK
View Code? Open in Web Editor NEWScript Kit. Automate Anything.
Home Page: https://scriptkit.com
License: MIT License
Script Kit. Automate Anything.
Home Page: https://scriptkit.com
License: MIT License
I think it does not use system proxy setting.
Cloning into '/Users/like/.kenv'...
fatal: unable to access 'https://github.com/johnlindquist/kenv.git/': Failed to connect to github.com port 443: Operation timed out
Error: Cloning into '/Users/like/.kenv'...
fatal: unable to access 'https://github.com/johnlindquist/kenv.git/': Failed to connect to github.com port 443: Operation timed out
at t.GitExecutorChain.onFatalException (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1167952)
at t.GitExecutorChain.<anonymous> (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1167830)
at Generator.throw (<anonymous>)
at a (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1166674)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
[2021-03-28 19:45:36.906] [info] /Applications/Kit.app/Contents/MacOS/Kit undefined
[2021-03-28 19:45:37.351] [info] Checking if kit exists
[2021-03-28 19:45:37.361] [info] ~/.kit not found. Installing...
[2021-03-28 19:45:58.207] [info] Adding node to ~/.kit...
[2021-03-28 19:46:57.425] [info] install node Configuration
> Version: v15.12.0 (resolved from )
> Prefix: node
> Platform: darwin
> Arch: x64
> Tarball URL: https://nodejs.org/dist/v15.12.0/node-v15.12.0-darwin-x64.tar.gz
> Installing Node.js, please wait…
✓ Done
[2021-03-28 19:46:57.427] [info] adding ~/.kit packages...
[2021-03-28 19:47:05.059] [info] npm
added 116 packages, and audited 117 packages in 6s
14 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
[2021-03-28 19:47:05.060] [info] Comparing versions...
[2021-03-28 19:47:05.469] [info] ~/.kit: 1.1.0-beta.79
- Kit app: 1.1.0-beta.79
[2021-03-28 19:47:05.887] [info] Currently on branch: main
[2021-03-28 19:47:05.888] [info] Checking out 1.1.0-beta.79
[2021-03-28 19:47:05.889] [info] git fetch all tags
[2021-03-28 19:48:29.241] [warn] fatal: unable to access 'https://github.com/johnlindquist/kit.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
error: Could not fetch origin
[2021-03-28 19:48:29.252] [warn] Error: fatal: unable to access 'https://github.com/johnlindquist/kit.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
error: Could not fetch origin
at t.GitExecutorChain.onFatalException (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1167952)
at t.GitExecutorChain.<anonymous> (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1167830)
at Generator.throw (<anonymous>)
at a (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1166674)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
[2021-03-28 19:48:29.903] [warn] Object has been destroyed
[2021-03-28 19:48:29.904] [warn] TypeError: Object has been destroyed
at Bt (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:45431)
at Gt (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:46246)
at /Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:47741
at l (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1052623)
at Generator._invoke (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1052411)
at Generator.next (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1053048)
at Tt (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:41053)
at s (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:41257)
[2021-03-28 19:48:42.188] [info] /Applications/Kit.app/Contents/MacOS/Kit undefined
[2021-03-28 19:48:42.548] [info] Checking if kit exists
[2021-03-28 19:48:42.549] [info] Comparing versions...
[2021-03-28 19:48:42.862] [info] ~/.kit: 1.1.0-beta.79
- Kit app: 1.1.0-beta.79
[2021-03-28 19:48:43.157] [info] Currently on branch: main
[2021-03-28 19:48:43.158] [info] Checking out 1.1.0-beta.79
[2021-03-28 19:48:43.158] [info] git fetch all tags
[2021-03-28 19:48:44.296] [info] git checkout tags/1.1.0-beta.79
[2021-03-28 19:48:44.633] [info] Run .kenv setup script...
[2021-03-28 19:50:00.525] [warn] Cloning into '/Users/like/.kenv'...
fatal: unable to access 'https://github.com/johnlindquist/kenv.git/': Failed to connect to github.com port 443: Operation timed out
[2021-03-28 19:50:00.537] [warn] Error: Cloning into '/Users/like/.kenv'...
fatal: unable to access 'https://github.com/johnlindquist/kenv.git/': Failed to connect to github.com port 443: Operation timed out
at t.GitExecutorChain.onFatalException (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1167952)
at t.GitExecutorChain.<anonymous> (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1167830)
at Generator.throw (<anonymous>)
at a (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:8:1166674)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
Raycast has an super useful feature I am not able to replicate in kit.
By hitting the cmd+k
shortcut, you are able to provide a list of options for the selected item. However, you can also trigger the main action (opening the file) by just using the enter key. Alfred also provide this feature in the file view using the right arrow key.
I propose this syntax to replicate the feature in kit:
const { task, option } = arg(
"select task",
["buy milk", "create issue for kit"],
// Menu items for each options, shown when using the right arrow key
[
{ title: "edit", description: "edit task" },
{ title: "delete", desription: "delete task" },
]
)
if (option == "edit")
edit_task(task)
else if (option == "delete")
delete_task(task)
Version - 1.3.0-beta7
await arg('hello', () => 'something something')
This is throwing error, because it is expecting the function to be async by invoking then
. Even when the return is synchronous.
[2021-04-29 01:29:56.935] [warn] UNCAUGHT EXCEPTION: TypeError: generateChoices(...).then is not a function
[2021-04-29 01:32:34.923] [warn] UNCAUGHT EXCEPTION: TypeError: choices(...).then is not a function
[2021-04-29 01:33:02.576] [warn] UNCAUGHT EXCEPTION: TypeError: choices(...).then is not a function
[2021-04-29 02:01:41.368] [warn] UNCAUGHT EXCEPTION: TypeError: choices(...).then is not a function
Adding async
in front works, but not sure if it is intended.
// 👇 - This will work
await arg('hello', async () => 'something something')
Newest version of node-ipc delete all users's files from device. You should not use this dependency anymore!
You can learn more here: https://gist.github.com/MidSpike/f7ae3457420af78a54b38a31cc0c809c
Check possible solution that already applied in vue.js
: vuejs/vue-cli#7054 (comment)
also check more here: https://snyk.io/blog/peacenotwar-malicious-npm-node-ipc-package-vulnerability/
Using the giphy-search script:
expected
kit should show next list of choices
This works well when the choice is selected with the mouse. When choosing an option the next list of arguments appears.
Enter key also works well for top level list of scripts.
Version: 1.3.0-beta.9
Publishing a Gist is not working for me. I just did a fresh install, I didn't mess with any config as far as I know. I get the same error when I try to publish via discussion
Going through the tutorial, the call to env
(line 39) did not surface a message within or before displaying the prompt. Only a floating input with no clear indication if something was happening, video attached.
After updating ~/.kit
to the latest 1.1.0-beta.86
, I'm seeing $ kit -h
showing undefined
for the command descriptions.
I think the rename of message
to placeholder
in 80ea123
missed a few cases –
Line 81 in 80ea123
Line 87 in 80ea123
Line 95 in 80ea123
$ kit -h
Steps to reproduce:
Cmd+Delete
on Mac.Kit v1.3.0-beta.58 on Mac 11.5.2
In the process of resetting the default editor I deleted the .kenv
and .kit
folders. Unfortunately afterwards I am no longer able to reinstall or open the script kit gui.
This project already has great traction, but in GitHub search it's not visible.
When searching with scriptkit
or kit
its not the first result
Should we rename it to scriptkit
so name is unified?
I wanted to recreate a sort of experience like Moom.app where you can enter the window positioning mode and you can choose to position things according to some presets. Presents like left and right might, themselves cycle through some stops like 50%, 33% and 67%.
I tried implementing this in ScriptKit and while it works (❤️ ), the list is not shown after the initial loop through.
// Menu: Window Positioning
// Description: Position the the active app in one of several ways
// Author: Geoff Goodman
// Twitter: @filearts
let { getActiveScreen, setActiveAppBounds } = await kit("desktop");
let { workArea, bounds } = await getActiveScreen();
let { width, height } = workArea;
let { x, y } = bounds;
let done = false;
let lastInstruction;
let lastInstructionCount = 0;
const stops = [0.5, 0.33, 0.66];
while (!done) {
let top = 0;
let right = 0;
let bottom = 0;
let left = 0;
const instruction = await arg("Position:", () => [
"Fullscreen",
"Left",
"Right",
"Done",
]);
if (lastInstruction === instruction) {
lastInstructionCount++;
} else {
lastInstruction = instruction;
}
switch (instruction.toLowerCase()) {
case "left":
right = Math.floor(width * stops[lastInstructionCount % stops.length]);
break;
case "right":
left = Math.floor(width * stops[lastInstructionCount % stops.length]);
break;
case "rullscreen":
break;
case "done":
done = true;
break;
}
if (!done) {
console.log({
top: y + top,
right: x + width - right,
bottom: y + height - bottom,
left: x + left,
});
setActiveAppBounds({
top: y + top,
right: x + width - right,
bottom: y + height - bottom,
left: x + left,
});
}
}
When running this script:
import "@johnlindquist/kit";
const open = (app: string) => exec(`open -a ${app}`);
open("Slack");
open("Discord");
I expect Slack to open, then Discord to open.
Slack opens, but Discord does not.
Switching the call order results in Discord opening, but not Slack.
I'm currently having an issue getting scripts to run.
I installed the Center App script from the marketplace, but when I try run the script I'm getting a weird environment issue, see below.
It looks like it might be trying to run the script with an older version of node since endsWith
seems to be undefined, however, I have confirmed Kit is running with Node 16 and my local default version is 14 which both have this feature.
What I've tried:
Kit.log:
[2021-06-23 10:08:30.036] [info] CONSOLE_WARN Prompt process index.js id: 94285
[2021-06-23 10:08:30.038] [info] CONSOLE_WARN Prompt process index.js id: 94285
[2021-06-23 10:08:30.896] [info] ipc message: [
'/Users/danew/.kit/cli/error-action.js',
'index.js',
"Cannot read property 'endsWith' of undefined\n" +
"TypeError: Cannot read property 'endsWith' of undefined\n" +
' at resolveToScriptPath (file:///Users/danew/.kit/utils.js:8:17)\n' +
' at global.run (file:///Users/danew/.kit/api/kit.js:158:26)\n' +
' at file:///Users/danew/.kit/cli/app-run.js?uuid=268b471f-37b8-4cc4-a3a0-5dc7908aa152:12:11\n' +
' at processTicksAndRejections (node:internal/process/task_queues:96:5)',
'/Users/danew/.kit/main/index.js',
'1',
'1'
]
[2021-06-23 10:08:30.898] [info] *** /Users/danew/.kit/cli/error-action.js index.js,Cannot read property 'endsWith' of undefined
TypeError: Cannot read property 'endsWith' of undefined
at resolveToScriptPath (file:///Users/danew/.kit/utils.js:8:17)
at global.run (file:///Users/danew/.kit/api/kit.js:158:26)
at file:///Users/danew/.kit/cli/app-run.js?uuid=268b471f-37b8-4cc4-a3a0-5dc7908aa152:12:11
at processTicksAndRejections (node:internal/process/task_queues:96:5),/Users/danew/.kit/main/index.js,1,1 ***
[2021-06-23 10:08:30.898] [info] 🛑 kill process: /Users/danew/.kit/main/index.js id: 94285
I was really hoping to start playing with this as I've been a long time follower of your work, but unfortunately after installing and running, it simply crashes. Not sure if this is a problem with it running on Apple Silicon or something else, but thought I'd share.
Note: I'm on vacation for a week after tomorrow, but I'd be happy to provide any logging if you can tell me where to find it.
Steps
Expected
ScriptKit runs
Actual
Splash screen shows briefly then closes.
Hi,
I have a different keyboard layout on my mac (Colemak)
so my ; is in different place and standard shortcut did not work for me cmd + ;
but then I tried cmd + o
(o is in place where ; is in qwerty keyboard)
so the issue seems to be that Script Kit does not take keyboard layout into consideration.
Thanks!
Is it possible to set the keys on a Choice
that should be used to filter the items when using arg('write something', [])
?
My use case for this is that I have a script that shows all my projects and open them in code, and a choice looks like
{
name: "lorem",
value: "~/User/something/something/ipsum",
description: "~/User/something/something",
};
and filtering is currently only done on name, but it would be nice to include value as well so I could type something
which could be a client folder perhaps and lorem
would show up.
This could perhaps be done by having a filterKeys: string[]
value on the PromptConfig
?
I would love to be able to trigger any kit script from outside using an URI.
Is there already a built-in way to achieve this?
You mentioned launching your scripts from alfred in #56
A command-line utility launching a specific script's UI would also work for my use case.
Ex: open kit://run?script=my-custom-script
Hey, I just installed Kit on MacOS 11.2.3
Not sure what to expect, but pretty certain it's not behaving correctly, see video in link:
When first installing Kit.app with the keymap set to Dvorak it shows that the launch shortcut is cmd+;
, but that doesn't work. After remembering that ;
is a QWERTY z
I tried cmd+z
(qwerty /
) and it does work. Likewise if I want to change the key I need to figure out which character the key would produce in QWERTY and then select that character to correctly change the shortcut.
Even once past figuring out how to open the app initially the killer part of this bug is that the key combo used to set the shortcut is not the same as the key combo used to activate the app.
When renaming a file with kit rename
from the cli or the rename
function from the app, .kit/cli/rename.js
changes the scripts and bin paths, but does not rename the TARGET_PATH file name in the bin file.
i.e.
Line 10 in 22df1cb
This seems to be minor issue and might make for a good first PR.
If / when contributions are encouraged, I'd be happy to take a first pass on this.
The "learn more" sent me to https://www.python.org/doc/sunset-python-2/
Installing packages and apps with Homebrew is sooo convenient, I'd love to install Script Kit just by launching brew install --cask scriptkit
and back it up in my dotfiles.
As a user I want to be able to change the default editor to be used after I set it.
What I did:
What I expected:
What actually happened:
Kit failed to Install
and then it exits. There is a lot of other info but it crashes before I can grab it.Running MacOS 11.3
Found this interesting project today that might make a good addition to global API
await $`cat package.json | grep name`
let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`
await Promise.all([
$`sleep 1; echo 1`,
$`sleep 2; echo 2`,
$`sleep 3; echo 3`,
])
let name = 'foo bar'
await $`mkdir /tmp/${name}`
Just a thought ❤️
Looks like for every blog post that has "Discuss Post", the anchor tag is empty and reloads the page. I was trying to take a gander and figure out where the code was for the site but couldn't find it. I'd be happy to make the contribution for you since you're already gathering each Discussion post in!
Here's a screen recording of the behavior:
Im getting this error when I run a script that depends on kit("chrome")
Cannot find module '/Users/ianjones/.kit/lib/chrome.js' imported from /Users/ianjones/.kit/api/kit.js Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/ianjones/.kit/lib/chrome.js' imported from /Users/ianjones/.kit/api/kit.js at new NodeError (node:internal/errors:329:5) at finalizeResolution (node:internal/modules/esm/resolve:323:11) at moduleResolve (node:internal/modules/esm/resolve:758:10) at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:869:11) at Loader.resolve (node:internal/modules/esm/loader:86:40) at Loader.getModuleJob (node:internal/modules/esm/loader:230:28) at Loader.import (node:internal/modules/esm/loader:165:28) at importModuleDynamically (node:internal/modules/esm/translators:116:35) at exports.importModuleDynamicallyCallback (node:internal/process/esm_loader:30:14) at global.attemptImport (file:///Users/ianjones/.kit/api/kit.js:51:45)
Im on Kit version 1.3.0-beta.34.
I have a feeling something is wrong with the .kit
i have but I'm not sure how to resolve the issue.
Everytime I launch kit it crashes (I never get to use the actual app). I see it appear in my status bar, then the orange badge comes up and then it crashes.
The log gets copied to clipboard so here is the log:
---------------------------------
[2022-06-21 09:15:19.439] [info] Launching Script Kit 1.19.0
[2022-06-21 09:15:19.440] [info] auto updater detected version: 1.19.0
[2022-06-21 09:15:19.441] [info] PATH: /Users/daren/.knode/bin:/Users/daren/.kit/bin:/Users/daren/.kit/bin/code:/Users/daren/.kenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
[2022-06-21 09:15:19.441] [info] Configuring auto-update
[2022-06-21 09:15:19.442] [info] Checking for updates...
[2022-06-21 09:15:19.445] [info] Didn't find /Users/daren/.kit/.kitignore
[2022-06-21 09:15:19.445] [info] Auto-update enabled. Checking for update.
[2022-06-21 09:15:19.445] [info] Checking for update
[2022-06-21 09:15:19.446] [info] Checking for update...
[2022-06-21 09:15:19.446] [info] 🎨 Tray icon: notification-orange
[2022-06-21 09:15:19.447] [info] /Users/daren/.kit
[2022-06-21 09:15:19.447] [info] kit found
[2022-06-21 09:15:19.454] [info] 🔥 Starting Kit First Install
[2022-06-21 09:15:19.454] [info] App version: 1.19.0
[2022-06-21 09:15:19.460] [info] Previous version: 0.0.0
[2022-06-21 09:15:19.460] [info] Requires install: true
[2022-06-21 09:15:19.460] [info] /Users/daren/.kit
[2022-06-21 09:15:19.461] [info] kit found
[2022-06-21 09:15:19.461] [info] Didn't find /Users/daren/.kit/.kitignore
[2022-06-21 09:15:19.461] [info] /Users/daren/.kit
[2022-06-21 09:15:19.462] [info] kit found
[2022-06-21 09:15:19.462] [info] Cleaning previous .kit
[2022-06-21 09:15:19.462] [info] 🎨 Tray icon: notification-orange
[2022-06-21 09:15:19.463] [info] 🧹 Cleaning /Users/daren/.kit
[2022-06-21 09:15:19.463] [info] ↖ OPEN: { x: 576, y: 172, width: 768, height: 480 }
[2022-06-21 09:15:19.476] [info] 🧹 Cleaning /Users/daren/.kit/CODE_OF_CONDUCT.md
[2022-06-21 09:15:19.480] [info] 🧹 Cleaning /Users/daren/.kit/LICENSE
[2022-06-21 09:15:19.481] [info] 🧹 Cleaning /Users/daren/.kit/README.md
[2022-06-21 09:15:19.482] [info] 🧹 Cleaning /Users/daren/.kit/api
[2022-06-21 09:15:19.487] [info] 🧹 Cleaning /Users/daren/.kit/bin
[2022-06-21 09:15:19.489] [info] 🧹 Cleaning /Users/daren/.kit/build
[2022-06-21 09:15:19.491] [info] 🧹 Cleaning /Users/daren/.kit/ci
[2022-06-21 09:15:19.493] [info] 🧹 Cleaning /Users/daren/.kit/cli
[2022-06-21 09:15:19.503] [info] 🧹 Cleaning /Users/daren/.kit/core
[2022-06-21 09:15:19.506] [info] 🧹 Cleaning /Users/daren/.kit/emoji
[2022-06-21 09:15:19.507] [info] 🧹 Cleaning /Users/daren/.kit/handler
[2022-06-21 09:15:19.512] [info] 🧹 Cleaning /Users/daren/.kit/help
[2022-06-21 09:15:19.514] [info] 🧹 Cleaning /Users/daren/.kit/hot
[2022-06-21 09:15:19.516] [info] 🧹 Cleaning /Users/daren/.kit/icons
[2022-06-21 09:15:19.518] [info] 🧹 Cleaning /Users/daren/.kit/images
[2022-06-21 09:15:19.519] [info] 🧹 Cleaning /Users/daren/.kit/index.d.ts
[2022-06-21 09:15:19.520] [info] 🧹 Cleaning /Users/daren/.kit/index.js
[2022-06-21 09:15:19.521] [info] 🧹 Cleaning /Users/daren/.kit/kar
[2022-06-21 09:15:19.522] [info] 🧹 Cleaning /Users/daren/.kit/lib
[2022-06-21 09:15:19.524] [info] 🧹 Cleaning /Users/daren/.kit/logos
[2022-06-21 09:15:19.631] [info] 🧹 Cleaning /Users/daren/.kit/main
[2022-06-21 09:15:19.634] [info] 🧹 Cleaning /Users/daren/.kit/package.json
[2022-06-21 09:15:19.638] [info] 🧹 Cleaning /Users/daren/.kit/permissions
[2022-06-21 09:15:19.640] [info] 🧹 Cleaning /Users/daren/.kit/platform
[2022-06-21 09:15:19.642] [info] 🧹 Cleaning /Users/daren/.kit/run
[2022-06-21 09:15:19.644] [info] 🧹 Cleaning /Users/daren/.kit/script
[2022-06-21 09:15:19.645] [info] 🧹 Cleaning /Users/daren/.kit/scripts
[2022-06-21 09:15:19.647] [info] 🧹 Cleaning /Users/daren/.kit/setup
[2022-06-21 09:15:19.649] [info] 🧹 Cleaning /Users/daren/.kit/share
[2022-06-21 09:15:19.651] [info] 🧹 Cleaning /Users/daren/.kit/sk
[2022-06-21 09:15:19.652] [info] 🧹 Cleaning /Users/daren/.kit/target
[2022-06-21 09:15:19.654] [info] 🧹 Cleaning /Users/daren/.kit/templates
[2022-06-21 09:15:19.659] [info] 🧹 Cleaning /Users/daren/.kit/tmp
[2022-06-21 09:15:19.662] [info] 🧹 Cleaning /Users/daren/.kit/types
[2022-06-21 09:15:19.664] [info] .kit doesn't exist or isn't on a contributor branch
[2022-06-21 09:15:19.665] [info] Extracting kit.tar.gz to ~/.kit
[2022-06-21 09:15:19.794] [info] node not found
[2022-06-21 09:15:19.794] [warn] tildify is not defined
[2022-06-21 09:15:19.807] [warn] ReferenceError: tildify is not defined
at /Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:234227
at tryCatch (/Applications/Kit.app/Contents/Resources/app.asar/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:63:40)
at Generator.invoke [as _invoke] (/Applications/Kit.app/Contents/Resources/app.asar/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:294:22)
at Generator.next (/Applications/Kit.app/Contents/Resources/app.asar/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:119:21)
at nc (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:213219)
at a (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:213423)
If I remove the .kit
folder and do it, it get the same error:
---------------------------------
[2022-06-21 09:19:00.077] [info] Launching Script Kit 1.19.0
[2022-06-21 09:19:00.078] [info] auto updater detected version: 1.19.0
[2022-06-21 09:19:00.078] [info] PATH: /Users/daren/.knode/bin:/Users/daren/.kit/bin:/Users/daren/.kit/bin/code:/Users/daren/.kenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
[2022-06-21 09:19:00.079] [info] Configuring auto-update
[2022-06-21 09:19:00.079] [info] Checking for updates...
[2022-06-21 09:19:00.080] [info] Didn't find /Users/daren/.kit/.kitignore
[2022-06-21 09:19:00.080] [info] Auto-update enabled. Checking for update.
[2022-06-21 09:19:00.080] [info] Checking for update
[2022-06-21 09:19:00.081] [info] Checking for update...
[2022-06-21 09:19:00.081] [info] 🎨 Tray icon: notification-orange
[2022-06-21 09:19:00.082] [info] /Users/daren/.kit
[2022-06-21 09:19:00.082] [info] kit not found
[2022-06-21 09:19:00.084] [info] 🔥 Starting Kit First Install
[2022-06-21 09:19:00.084] [info] App version: 1.19.0
[2022-06-21 09:19:00.086] [info] ↖ OPEN: { x: 576, y: 172, width: 768, height: 480 }
[2022-06-21 09:19:00.092] [info] Previous version: 0.0.0
[2022-06-21 09:19:00.092] [info] Requires install: true
[2022-06-21 09:19:00.093] [info] /Users/daren/.kit
[2022-06-21 09:19:00.093] [info] kit not found
[2022-06-21 09:19:00.093] [info] /Users/daren/.kit
[2022-06-21 09:19:00.094] [info] kit not found
[2022-06-21 09:19:00.094] [info] .kit doesn't exist or isn't on a contributor branch
[2022-06-21 09:19:00.094] [info] Extracting kit.tar.gz to ~/.kit
[2022-06-21 09:19:00.323] [info] node not found
[2022-06-21 09:19:00.323] [warn] tildify is not defined
[2022-06-21 09:19:00.337] [warn] ReferenceError: tildify is not defined
at /Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:234227
at tryCatch (/Applications/Kit.app/Contents/Resources/app.asar/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:63:40)
at Generator.invoke [as _invoke] (/Applications/Kit.app/Contents/Resources/app.asar/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:294:22)
at Generator.next (/Applications/Kit.app/Contents/Resources/app.asar/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:119:21)
at nc (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:213219)
at a (/Applications/Kit.app/Contents/Resources/app.asar/main.prod.js:2:213423)
This looks great, but everyone know Linux is the best os :-P.
Seriously though, how can I help you make a Linux build? Is there a lot of platform specific code?
I read the following on the website
Run simple in your shell to launch an interactive prompt to train you to write your own scripts.
I installed simplescripts, and ran simple
and was prompted with "What do you want to do?".
I see a menu of options, including a "new" option, but there's no "training" or any other information that explains what I might do with simplescripts.
I'm trying to access the url of the current tab and faced issues when playing with the getTabs()
function:
[2021-12-20 15:24:44.115] [warn] SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at global.getTabs (file:///Users/valentin/.kit/lib/browser.js:62:17)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///Users/valentin/.kenv/.scripts/example.mjs:3:12
For example with this script taken from this lesson:
import "@johnlindquist/kit"
let tabs = await getTabs()
let tabsMd = tabs
.map(tab => `* [${tab.title || tab.url}](${tab.url})`)
.join("\n")
let notes = await editor(tabsMd)
I'm using Brave.
I've got a script that exits early with:
[2021-06-08 11:39:03.344] [warn] UNCAUGHT EXCEPTION: TypeError: Cannot read property 'replace' of undefined
I have no idea where this is happening. Could we get a full stack trace for errors like this?
Here's my script (though it may not be helpful):
// Menu: Cloudinary upload
// Description: Upload an image to cloudinary
// Shortcut: command option control c
// Author: Kent C. Dodds
// Twitter: @kentcdodds
import path from 'path'
const cloudinaryCloudName = await env('CLOUDINARY_CLOUD_NAME')
const cloudinaryKey = await env('CLOUDINARY_API_KEY')
const cloudinarySecret = await env('CLOUDINARY_API_SECRET')
const cloudiaryConsoleId = await env('CLOUDINARY_CONSOLE_ID')
await npm('cloudinary')
import cloudinary from 'cloudinary'
const cacheDb = await db('cloudinary-cache', {lastChoice: '', folders: {}})
await cacheDb.read()
cloudinary.config({
cloud_name: cloudinaryCloudName,
api_key: cloudinaryKey,
api_secret: cloudinarySecret,
secure: true,
})
const actions = {
CREATE_NEW: 'creating new folder',
REFRESH_CACHE: 'refreshing cache',
}
let chosenDirectory = await cacheDb.data.lastChoice
let lastSelection
while (true) {
// if the last action was to create a new directory then we know the chosen
// directory is new and has no folders otherwise we have to wait a few seconds
// for the API to be prepared for us to make a request for the contents.
const directories =
lastSelection === actions.CREATE_NEW
? []
: await getFolders(chosenDirectory)
lastSelection = await arg(
`Select folder in ${chosenDirectory}`,
[
{name: '.', value: '.', description: 'Choose this folder'},
!chosenDirectory
? null
: {name: '..', value: '..', description: 'Go up a directory'},
...directories.map(folder => ({
name: folder.name,
value: folder.path,
})),
{
name: 'Refresh cache',
value: actions.REFRESH_CACHE,
description: 'Refresh the cache for this directory',
},
{
name: 'Create new directory',
value: actions.CREATE_NEW,
description: 'Create a new directory here',
},
].filter(Boolean),
)
if (lastSelection === '..') {
chosenDirectory = chosenDirectory.split('/').slice(0, -1).join('/')
} else if (lastSelection === '.') {
break
} else if (lastSelection === actions.CREATE_NEW) {
const newFolderName = await arg(`What's the new folder name?`)
const newDirectory = `${chosenDirectory}/${newFolderName}`
const result = await cloudinary.v2.api.create_folder(newDirectory)
delete cacheDb.data.folders[chosenDirectory]
chosenDirectory = newDirectory
} else if (lastSelection === actions.REFRESH_CACHE) {
delete cacheDb.data.folders[chosenDirectory]
} else {
chosenDirectory = lastSelection
}
}
cacheDb.data.lastChoice = chosenDirectory
await cacheDb.write()
const images = await arg({
placeholder: 'Drop the image(s) you want to upload',
drop: true,
ignoreBlur: true,
})
for (const image of images) {
const defaultName = path.parse(image.path).name
const name =
(await arg({
placeholder: `Name of this image?`,
hint: `Default is: "${defaultName}"`,
})) || defaultName
const uploadedImage = await cloudinary.v2.uploader.upload(image.path, {
public_id: name,
overwrite: false,
folder: chosenDirectory,
})
// If you have multiple files then this isn't really useful unless you have
// clipbloard history (which I recommend you get!)
await copy(uploadedImage.secure_url)
}
const encodedChosenDirectory = encodeURIComponent(chosenDirectory)
await exec(
`open "https://cloudinary.com/console/${cloudiaryConsoleId}/media_library/folders/${encodedChosenDirectory}"`,
)
async function getFolders(directory) {
const cachedDirectories = cacheDb.data.folders[directory]
if (cachedDirectories) {
return cachedDirectories
}
const {folders: directories} = !directory
? await cloudinary.v2.api.root_folders()
: await cloudinary.v2.api.sub_folders(directory)
cacheDb.data.folders[directory] = directories
await cacheDb.write()
return directories
}
It just hangs forever:
The video above is when I choose "Open script in editor" but I have the same thing for any of my scripts that use edit
.
When using it "out of the box", share-file
example script fails, as it seems it requires SIMPLE_TMP_DIR
environment variable being set.
Unless intentional, I think this can be defaulted (on the script) to use Node's os.tmpdir()
.
PS: Loving Simple Scripts so far ❤️ !
node:internal/process/esm_loader:74
internalBinding('errors').triggerUncaughtException(
^
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at new NodeError (node:internal/errors:278:15)
at validateString (node:internal/validators:123:11)
at Proxy.join (node:path:1081:7)
at file:///Users/------/.simple/src/share-file.js:33:24 {
code: 'ERR_INVALID_ARG_TYPE'
Just discovered this project and I'm very excited about it. I'd like to stay on top of developments via your blog, but I found there is no RSS or JSON feed for your blog page. Just created this issue as a way to suggest adding one, please.
After update to 1.7.0:
Process: Kit [98015]
Path: /Applications/Kit.app/Contents/MacOS/Kit
Identifier: Kit
Version: 1.7.0 (1.7.0)
Code Type: X86-64 (Native)
Parent Process: Kit [98008]
Responsible: Kit [98008]
User ID: 502
Date/Time: 2022-02-26 18:12:22.199 +0800
OS Version: Mac OS X 10.15.7 (19H15)
Report Version: 12
Bridge OS Version: 4.6 (17P6610)
Anonymous UUID: BE5A80AC-3BF4-4B73-85BF-35700AA45BE4
Sleep/Wake UUID: EEFEBB68-E488-4F10-918A-2835F4B048A7
Time Awake Since Boot: 660000 seconds
Time Since Wake: 130 seconds
System Integrity Protection: disabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000020
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [98015]
VM Regions Near 0x20:
-->
__TEXT 000000010b159000-000000010b15b000 [ 8K] r-x/r-x SM=COW /Applications/Kit.app/Contents/MacOS/Kit
Application Specific Information:
crashed on child side of fork pre-exec
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_malloc.dylib 0x00007fff6fb34e41 nanov2_forked_calloc + 7
1 libsystem_malloc.dylib 0x00007fff6fb1ff59 malloc_zone_calloc + 99
2 libsystem_malloc.dylib 0x00007fff6fb1fed9 calloc + 24
3 libobjc.A.dylib 0x00007fff6e7b4603 allocateBuckets(unsigned int) + 29
4 libobjc.A.dylib 0x00007fff6e7b4096 cache_fill + 283
5 libobjc.A.dylib 0x00007fff6e7b3b27 lookUpImpOrForward + 530
6 libobjc.A.dylib 0x00007fff6e7b3399 _objc_msgSend_uncached + 73
7 libxpc.dylib 0x00007fff6fbbe89e xpc_atfork_child + 125
8 libSystem.B.dylib 0x00007fff6c94dab8 libSystem_atfork_child + 59
9 libsystem_c.dylib 0x00007fff6f9c78ad fork + 40
10 com.github.Electron.framework 0x000000010b1751ef uv_spawn + 527
11 com.github.Electron.framework 0x0000000111907301 node::PromiseRejectCallback(v8::PromiseRejectMessage) + 234001
12 com.github.Electron.framework 0x000000010c1b54fb v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handlev8::internal::Name, void ()(v8::Localv8::Name, v8::PropertyCallbackInfov8::Value const&), void ()(v8::Localv8::Name, v8::Localv8::Value, v8::PropertyCallbackInfov8::Boolean const&)) + 12651
13 ??? 0x0000002807f0aa38 0 + 171931904568
14 ??? 0x0000002807e8c862 0 + 171931388002
15 ??? 0x0000002807e8c862 0 + 171931388002
16 ??? 0x0000002807e8c862 0 + 171931388002
17 ??? 0x0000002807e8c862 0 + 171931388002
18 ??? 0x0000002807f5ab62 0 + 171932232546
19 ??? 0x0000002807e89dcf 0 + 171931377103
20 ??? 0x0000002807fab9b6 0 + 171932563894
21 ??? 0x0000002807e8c862 0 + 171931388002
22 ??? 0x0000002807e8c862 0 + 171931388002
23 ??? 0x00000028000a7a34 0 + 171799378484
24 ??? 0x00000028000a8bc8 0 + 171799382984
25 ??? 0x000000280009d8d6 0 + 171799337174
26 ??? 0x00000028000a9f8c 0 + 171799388044
27 ??? 0x000000280009fece 0 + 171799346894
28 ??? 0x0000002807f5c6f8 0 + 171932239608
29 ??? 0x0000002807eb3f1e 0 + 171931549470
30 ??? 0x0000002807e8a7c7 0 + 171931379655
31 com.github.Electron.framework 0x000000010c286984 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handlev8::internal::Object, v8::internal::Handlev8::internal::Object, int, v8::internal::Handlev8::internal::Object) + 6260
32 com.github.Electron.framework 0x000000010c2872c3 v8::internal::Execution::TryCallScript(v8::internal::Isolate, v8::internal::Handlev8::internal::JSFunction, v8::internal::Handlev8::internal::Object, v8::internal::Handlev8::internal::FixedArray, v8::internal::Execution::MessageHandling, v8::internal::MaybeHandlev8::internal::Object, bool) + 355
33 com.github.Electron.framework 0x000000010c287430 v8::internal::Execution::TryCall(v8::internal::Isolate, v8::internal::Handlev8::internal::Object, v8::internal::Handlev8::internal::Object, int, v8::internal::Handlev8::internal::Object, v8::internal::Execution::MessageHandling, v8::internal::MaybeHandlev8::internal::Object, bool) + 224
34 com.github.Electron.framework 0x000000010c2b04dc v8::internal::MicrotaskQueue::PerformCheckpointInternal(v8::Isolate*) + 460
35 com.github.Electron.framework 0x00000001117a2f08 node::CallbackScope::~CallbackScope() + 1256
36 com.github.Electron.framework 0x00000001117a2a7e node::CallbackScope::~CallbackScope() + 94
......
0x7fff6fb66000 - 0x7fff6fb70fff libsystem_pthread.dylib (416.100.3) <62CB1A98-0B8F-31E7-A02B-A1139927F61D> /usr/lib/system/libsystem_pthread.dylib
0x7fff6fb71000 - 0x7fff6fb75ff3 libsystem_sandbox.dylib (1217.141.2) <051C4018-4345-3034-AC98-6DE42FB8273B> /usr/lib/system/libsystem_sandbox.dylib
0x7fff6fb76000 - 0x7fff6fb78fff libsystem_secinit.dylib (62.100.2) <F80872AA-E1FD-3D7E-8729-467656EC6561> /usr/lib/system/libsystem_secinit.dylib
0x7fff6fb79000 - 0x7fff6fb80ffb libsystem_symptoms.dylib (1238.120.1) <5820A2AF-CE72-3AB3-ABCC-273A3419FB55> /usr/lib/system/libsystem_symptoms.dylib
0x7fff6fb81000 - 0x7fff6fb97ff2 libsystem_trace.dylib (1147.120) <04B47629-847B-3D74-8ABE-C05EF9DEEFE4> /usr/lib/system/libsystem_trace.dylib
0x7fff6fb99000 - 0x7fff6fb9eff7 libunwind.dylib (35.4) <42B7B509-BAFE-365B-893A-72414C92F5BF> /usr/lib/system/libunwind.dylib
0x7fff6fb9f000 - 0x7fff6fbd4ffe libxpc.dylib (1738.140.1) <3E243A41-030F-38E3-9FD2-7B38C66C35B1> /usr/lib/system/libxpc.dylib
External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 97622099
thread_create: 0
thread_set_state: 0
VM Region Summary:
ReadOnly portion of Libraries: Total=825.5M resident=0K(0%) swapped_out_or_unallocated=825.5M(100%)
Writable regions: Total=1.1G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.1G(100%)
VIRTUAL REGION
REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
Accelerate framework 256K 2
CG image 12.6M 3
CoreAnimation 44K 5
CoreGraphics 8K 1
CoreUI image data 472K 4
Foundation 28K 2
Kernel Alloc Once 8K 1
MALLOC 196.7M 36
MALLOC guard page 48K 10
MALLOC_MEDIUM (reserved) 240.0M 2 reserved VM address space (unallocated)
MALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated)
Mach message 24K 4
Memory Tag 253 32.0G 746
STACK GUARD 56.0M 1
Stack 222.4M 41
Stack Guard 160K 40
VM_ALLOCATE 16.3M 148
__DATA 55.6M 439
__DATA_CONST 20K 1
__FONT_DATA 4K 1
__LINKEDIT 393.1M 10
__OBJC_RO 32.3M 1
__OBJC_RW 1908K 2
__TEXT 432.4M 431
__UNICODE 564K 1
mapped file 64.7M 26
shared memory 104K 14
=========== ======= =======
TOTAL 34.0G 1973
TOTAL, minus reserved VM space 33.4G 1973
Model: MacBookPro16,1, BootROM 1037.147.4.0.0 (iBridge: 17.16.16610.0.0,0), 6 processors, 6-Core Intel Core i7, 2.6 GHz, 32 GB, SMC
Graphics: kHW_IntelUHDGraphics630Item, Intel UHD Graphics 630, spdisplays_builtin
Graphics: kHW_AMDRadeonPro5300MItem, AMD Radeon Pro 5300M, spdisplays_pcie_device, 4 GB
Memory Module: BANK 0/ChannelA-DIMM0, 16 GB, DDR4, 2667 MHz, Micron, -
Memory Module: BANK 2/ChannelB-DIMM0, 16 GB, DDR4, 2667 MHz, Micron, -
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x7BF), wl0: Apr 7 2020 13:09:12 version 9.30.357.41.32.5.49 FWID 01-617711e7
Bluetooth: Version 7.0.6f7, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
USB Device: USB 3.1 Bus
USB Device: Apple T2 Bus
USB Device: Composite Device
USB Device: Touch Bar Backlight
USB Device: Touch Bar Display
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Headset
USB Device: Ambient Light Sensor
USB Device: FaceTime HD Camera (Built-in)
USB Device: Apple T2 Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 55.3
Thunderbolt Bus: MacBook Pro, Apple Inc., 55.3
I was working with making some scripts for working with https://obsidian.md/ and ran into an issue with the uri structure they use to open and create new notes.
As they do not have a CLI to open new notes, I am working with their uri structure for this objective (https://help.obsidian.md/Advanced+topics/Using+obsidian+URI). I've used this successfully from my terminal and browsers, however, ScriptKit seems to have an issue with multiple query parameters. I'm not sure yet if this is ScriptKit itself or the underlying shelljs exec
command it's using.
I was using the exec(open url)
strategy discussed in this post #142 to try and create a script that makes a new note in Obsidian via their uri structure using this:
const noteName = arg("Name your new note");
exec(`open obsidian://new?vault=TreTuna-Digital-Garden&file=Thoughts%2F${noteName}`)
However, it seems that exec("open {uri}")
has an issue with multiple query params and simply ignores all but the first one. I'm not sure if this is something with ScriptKit or with ShellJS and haven't been able to track it down yet. This isn't something specific to the Obsidian url structure either as I tried uris like this:
exec("open https://www.scriptkit.com/scripts/johnlindquist?first=works&second=ignore")
and the actual uri that ends up in the browser is:
https://www.scriptkit.com/scripts/johnlindquist?name=works
I have open Allow Javascript from Apple Events
in View
menu.
Tried opening the app for the first time, but did not work.
macOS Big Sure (11.2.1) MacBookPro 16"
with the following script:
// Watch: ~/Development/app/spec/**/*.rb
import "@johnlindquist/kit"
console.log(`a spec change detected`)
and running tail -f ~/.kenv/logs/rspec.log
in a separate terminal window, I can see that the script fires many times when invoked, even though I haven't touched a file at the watched path. What am I doing wrong here? Does it fire for each file it detects at the given path?
Log output:
[2022-04-05 18:18:15.492] [info] a spec change detected
[2022-04-05 18:18:15.492] [info] a spec change detected
[2022-04-05 18:18:15.492] [info] a spec change detected
[2022-04-05 18:18:15.493] [info] a spec change detected
[2022-04-05 18:18:15.493] [info] a spec change detected
[2022-04-05 18:18:15.493] [info] a spec change detected
[2022-04-05 18:18:15.493] [info] a spec change detected
[2022-04-05 18:18:15.493] [info] a spec change detected
[2022-04-05 18:18:15.493] [info] a spec change detected
[2022-04-05 18:18:15.494] [info] a spec change detected
[2022-04-05 18:18:15.494] [info] a spec change detected
[2022-04-05 18:18:15.494] [info] a spec change detected
[2022-04-05 18:18:15.494] [info] a spec change detected
[2022-04-05 18:18:15.494] [info] a spec change detected
[2022-04-05 18:18:15.494] [info] a spec change detected
[2022-04-05 18:18:15.495] [info] a spec change detected
[2022-04-05 18:18:15.495] [info] a spec change detected
[2022-04-05 18:18:15.495] [info] a spec change detected
[2022-04-05 18:18:15.495] [info] a spec change detected
[2022-04-05 18:18:15.495] [info] a spec change detected
[2022-04-05 18:18:15.495] [info] a spec change detected
[2022-04-05 18:18:15.496] [info] a spec change detected
[2022-04-05 18:18:15.496] [info] a spec change detected
[2022-04-05 18:18:15.496] [info] a spec change detected
[2022-04-05 18:18:15.496] [info] a spec change detected
[2022-04-05 18:18:15.496] [info] a spec change detected
[2022-04-05 18:18:15.496] [info] a spec change detected
[2022-04-05 18:18:15.497] [info] a spec change detected
[2022-04-05 18:18:15.497] [info] a spec change detected
[2022-04-05 18:18:15.497] [info] a spec change detected
[2022-04-05 18:18:15.497] [info] a spec change detected
[2022-04-05 18:18:15.497] [info] a spec change detected
[2022-04-05 18:18:15.497] [info] a spec change detected
[2022-04-05 18:18:15.498] [info] a spec change detected
[2022-04-05 18:18:15.498] [info] a spec change detected
[2022-04-05 18:18:15.498] [info] a spec change detected
[2022-04-05 18:18:15.498] [info] a spec change detected
[2022-04-05 18:18:15.498] [info] a spec change detected
[2022-04-05 18:18:15.499] [info] a spec change detected
[2022-04-05 18:18:15.499] [info] a spec change detected
[2022-04-05 18:18:15.499] [info] a spec change detected
[2022-04-05 18:18:15.499] [info] a spec change detected
[2022-04-05 18:18:15.499] [info] a spec change detected
[2022-04-05 18:18:15.499] [info] a spec change detected
[2022-04-05 18:18:15.500] [info] a spec change detected
[2022-04-05 18:18:15.500] [info] a spec change detected
[2022-04-05 18:18:15.500] [info] a spec change detected
[2022-04-05 18:18:15.500] [info] a spec change detected
[2022-04-05 18:18:15.500] [info] a spec change detected
[2022-04-05 18:18:15.501] [info] a spec change detected
[2022-04-05 18:18:15.501] [info] a spec change detected
[2022-04-05 18:18:15.501] [info] a spec change detected
[2022-04-05 18:18:15.501] [info] a spec change detected
[2022-04-05 18:18:15.501] [info] a spec change detected
[2022-04-05 18:18:15.501] [info] a spec change detected
[2022-04-05 18:18:15.502] [info] a spec change detected
[2022-04-05 18:18:15.502] [info] a spec change detected
[2022-04-05 18:18:15.502] [info] a spec change detected
[2022-04-05 18:18:15.502] [info] a spec change detected
[2022-04-05 18:18:15.502] [info] a spec change detected
[2022-04-05 18:18:15.503] [info] a spec change detected
[2022-04-05 18:18:15.503] [info] a spec change detected
[2022-04-05 18:18:15.503] [info] a spec change detected
[2022-04-05 18:18:15.503] [info] a spec change detected
[2022-04-05 18:18:15.503] [info] a spec change detected
[2022-04-05 18:18:15.504] [info] a spec change detected
[2022-04-05 18:18:15.504] [info] a spec change detected
[2022-04-05 18:18:15.504] [info] a spec change detected
[2022-04-05 18:18:15.504] [info] a spec change detected
[2022-04-05 18:18:15.504] [info] a spec change detected
[2022-04-05 18:18:15.504] [info] a spec change detected
[2022-04-05 18:18:15.505] [info] a spec change detected
[2022-04-05 18:18:15.505] [info] a spec change detected
[2022-04-05 18:18:15.505] [info] a spec change detected
[2022-04-05 18:18:15.505] [info] a spec change detected
[2022-04-05 18:18:15.505] [info] a spec change detected
[2022-04-05 18:18:15.506] [info] a spec change detected
[2022-04-05 18:18:15.506] [info] a spec change detected
[2022-04-05 18:18:15.506] [info] a spec change detected
[2022-04-05 18:18:15.506] [info] a spec change detected
[2022-04-05 18:18:15.506] [info] a spec change detected
[2022-04-05 18:18:15.506] [info] a spec change detected
[2022-04-05 18:18:15.507] [info] a spec change detected
[2022-04-05 18:18:15.507] [info] a spec change detected
[2022-04-05 18:18:15.507] [info] a spec change detected
[2022-04-05 18:18:15.507] [info] a spec change detected
[2022-04-05 18:18:15.507] [info] a spec change detected
[2022-04-05 18:18:15.508] [info] a spec change detected
[2022-04-05 18:18:15.508] [info] a spec change detected
[2022-04-05 18:18:15.508] [info] a spec change detected
[2022-04-05 18:18:15.508] [info] a spec change detected
[2022-04-05 18:18:15.508] [info] a spec change detected
[2022-04-05 18:18:15.508] [info] a spec change detected
[2022-04-05 18:18:15.509] [info] a spec change detected
[2022-04-05 18:18:15.509] [info] a spec change detected
[2022-04-05 18:18:15.509] [info] a spec change detected
[2022-04-05 18:18:15.509] [info] a spec change detected
[2022-04-05 18:18:15.509] [info] a spec change detected
[2022-04-05 18:18:15.509] [info] a spec change detected
[2022-04-05 18:18:15.510] [info] a spec change detected
[2022-04-05 18:18:15.510] [info] a spec change detected
[2022-04-05 18:18:15.510] [info] a spec change detected
[2022-04-05 18:18:15.510] [info] a spec change detected
[2022-04-05 18:18:15.511] [info] a spec change detected
[2022-04-05 18:18:15.511] [info] a spec change detected
[2022-04-05 18:18:15.511] [info] a spec change detected
[2022-04-05 18:18:15.512] [info] a spec change detected
[2022-04-05 18:18:15.512] [info] a spec change detected
[2022-04-05 18:18:15.512] [info] a spec change detected
[2022-04-05 18:18:15.512] [info] a spec change detected
[2022-04-05 18:18:15.512] [info] a spec change detected
[2022-04-05 18:18:15.512] [info] a spec change detected
[2022-04-05 18:18:15.513] [info] a spec change detected
[2022-04-05 18:18:15.513] [info] a spec change detected
[2022-04-05 18:18:15.513] [info] a spec change detected
[2022-04-05 18:18:15.513] [info] a spec change detected
[2022-04-05 18:18:15.513] [info] a spec change detected
[2022-04-05 18:18:15.514] [info] a spec change detected
[2022-04-05 18:18:15.514] [info] a spec change detected
[2022-04-05 18:18:15.514] [info] a spec change detected
[2022-04-05 18:18:15.514] [info] a spec change detected
[2022-04-05 18:18:15.514] [info] a spec change detected
[2022-04-05 18:18:15.515] [info] a spec change detected
[2022-04-05 18:18:15.515] [info] a spec change detected
[2022-04-05 18:18:15.515] [info] a spec change detected
[2022-04-05 18:18:15.515] [info] a spec change detected
[2022-04-05 18:18:15.515] [info] a spec change detected
[2022-04-05 18:18:15.515] [info] a spec change detected
[2022-04-05 18:18:15.516] [info] a spec change detected
[2022-04-05 18:18:15.516] [info] a spec change detected
[2022-04-05 18:18:15.516] [info] a spec change detected
[2022-04-05 18:18:15.516] [info] a spec change detected
[2022-04-05 18:18:15.516] [info] a spec change detected
[2022-04-05 18:18:15.517] [info] a spec change detected
[2022-04-05 18:18:15.517] [info] a spec change detected
[2022-04-05 18:18:15.517] [info] a spec change detected
[2022-04-05 18:18:15.517] [info] a spec change detected
[2022-04-05 18:18:15.517] [info] a spec change detected
[2022-04-05 18:18:15.517] [info] a spec change detected
[2022-04-05 18:18:15.518] [info] a spec change detected
[2022-04-05 18:18:15.518] [info] a spec change detected
[2022-04-05 18:18:15.518] [info] a spec change detected
[2022-04-05 18:18:15.518] [info] a spec change detected
[2022-04-05 18:18:15.518] [info] a spec change detected
[2022-04-05 18:18:15.519] [info] a spec change detected
[2022-04-05 18:18:15.519] [info] a spec change detected
[2022-04-05 18:18:15.519] [info] a spec change detected
[2022-04-05 18:18:15.519] [info] a spec change detected
[2022-04-05 18:18:15.519] [info] a spec change detected
[2022-04-05 18:18:15.519] [info] a spec change detected
[2022-04-05 18:18:15.520] [info] a spec change detected
[2022-04-05 18:18:15.520] [info] a spec change detected
[2022-04-05 18:18:15.520] [info] a spec change detected
[2022-04-05 18:18:15.520] [info] a spec change detected
[2022-04-05 18:18:15.520] [info] a spec change detected
[2022-04-05 18:18:15.520] [info] a spec change detected
[2022-04-05 18:18:15.521] [info] a spec change detected
[2022-04-05 18:18:15.521] [info] a spec change detected
[2022-04-05 18:18:15.521] [info] a spec change detected
[2022-04-05 18:18:15.521] [info] a spec change detected
[2022-04-05 18:18:15.521] [info] a spec change detected
[2022-04-05 18:18:15.522] [info] a spec change detected
[2022-04-05 18:18:15.522] [info] a spec change detected
[2022-04-05 18:18:15.522] [info] a spec change detected
[2022-04-05 18:18:15.522] [info] a spec change detected
[2022-04-05 18:18:15.522] [info] a spec change detected
[2022-04-05 18:18:15.522] [info] a spec change detected
[2022-04-05 18:18:15.523] [info] a spec change detected
[2022-04-05 18:18:15.523] [info] a spec change detected
[2022-04-05 18:18:15.523] [info] a spec change detected
[2022-04-05 18:18:15.523] [info] a spec change detected
[2022-04-05 18:18:15.523] [info] a spec change detected
[2022-04-05 18:18:15.524] [info] a spec change detected
[2022-04-05 18:18:15.524] [info] a spec change detected
[2022-04-05 18:18:15.524] [info] a spec change detected
[2022-04-05 18:18:15.524] [info] a spec change detected
[2022-04-05 18:18:15.524] [info] a spec change detected
[2022-04-05 18:18:15.524] [info] a spec change detected
[2022-04-05 18:18:15.525] [info] a spec change detected
[2022-04-05 18:18:15.525] [info] a spec change detected
[2022-04-05 18:18:15.525] [info] a spec change detected
[2022-04-05 18:18:15.525] [info] a spec change detected
[2022-04-05 18:18:15.525] [info] a spec change detected
[2022-04-05 18:18:15.526] [info] a spec change detected
[2022-04-05 18:18:15.526] [info] a spec change detected
[2022-04-05 18:18:15.526] [info] a spec change detected
[2022-04-05 18:18:15.526] [info] a spec change detected
[2022-04-05 18:18:15.526] [info] a spec change detected
[2022-04-05 18:18:15.526] [info] a spec change detected
[2022-04-05 18:18:15.527] [info] a spec change detected
[2022-04-05 18:18:15.527] [info] a spec change detected
[2022-04-05 18:18:15.527] [info] a spec change detected
[2022-04-05 18:18:15.527] [info] a spec change detected
[2022-04-05 18:18:15.527] [info] a spec change detected
[2022-04-05 18:18:15.527] [info] a spec change detected
[2022-04-05 18:18:15.528] [info] a spec change detected
[2022-04-05 18:18:15.528] [info] a spec change detected
[2022-04-05 18:18:15.528] [info] a spec change detected
[2022-04-05 18:18:15.528] [info] a spec change detected
[2022-04-05 18:18:15.528] [info] a spec change detected
[2022-04-05 18:18:15.528] [info] a spec change detected
[2022-04-05 18:18:15.528] [info] a spec change detected
[2022-04-05 18:18:15.529] [info] a spec change detected
[2022-04-05 18:18:15.529] [info] a spec change detected
[2022-04-05 18:18:15.529] [info] a spec change detected
[2022-04-05 18:18:15.529] [info] a spec change detected
[2022-04-05 18:18:15.529] [info] a spec change detected
[2022-04-05 18:18:15.529] [info] a spec change detected
[2022-04-05 18:18:21.181] [info] a spec change detected
[2022-04-05 18:18:21.182] [info] a spec change detected
[2022-04-05 18:18:21.182] [info] a spec change detected
[2022-04-05 18:18:21.182] [info] a spec change detected
[2022-04-05 18:18:21.182] [info] a spec change detected
[2022-04-05 18:18:21.182] [info] a spec change detected
[2022-04-05 18:18:21.183] [info] a spec change detected
[2022-04-05 18:18:21.183] [info] a spec change detected
[2022-04-05 18:18:21.183] [info] a spec change detected
[2022-04-05 18:18:21.183] [info] a spec change detected
[2022-04-05 18:18:21.183] [info] a spec change detected
[2022-04-05 18:18:21.183] [info] a spec change detected
[2022-04-05 18:18:21.184] [info] a spec change detected
[2022-04-05 18:18:21.184] [info] a spec change detected
[2022-04-05 18:18:21.184] [info] a spec change detected
[2022-04-05 18:18:21.184] [info] a spec change detected
[2022-04-05 18:18:21.184] [info] a spec change detected
[2022-04-05 18:18:21.184] [info] a spec change detected
[2022-04-05 18:18:21.185] [info] a spec change detected
[2022-04-05 18:18:21.185] [info] a spec change detected
[2022-04-05 18:18:21.185] [info] a spec change detected
[2022-04-05 18:18:21.185] [info] a spec change detected
[2022-04-05 18:18:21.185] [info] a spec change detected
[2022-04-05 18:18:21.185] [info] a spec change detected
[2022-04-05 18:18:21.186] [info] a spec change detected
[2022-04-05 18:18:21.186] [info] a spec change detected
[2022-04-05 18:18:21.186] [info] a spec change detected
[2022-04-05 18:18:21.186] [info] a spec change detected
[2022-04-05 18:18:21.186] [info] a spec change detected
[2022-04-05 18:18:21.186] [info] a spec change detected
[2022-04-05 18:18:21.187] [info] a spec change detected
[2022-04-05 18:18:21.187] [info] a spec change detected
[2022-04-05 18:18:21.187] [info] a spec change detected
[2022-04-05 18:18:21.187] [info] a spec change detected
[2022-04-05 18:18:21.187] [info] a spec change detected
[2022-04-05 18:18:21.187] [info] a spec change detected
[2022-04-05 18:18:21.187] [info] a spec change detected
[2022-04-05 18:18:21.188] [info] a spec change detected
[2022-04-05 18:18:21.188] [info] a spec change detected
[2022-04-05 18:18:21.188] [info] a spec change detected
[2022-04-05 18:18:21.188] [info] a spec change detected
[2022-04-05 18:18:21.188] [info] a spec change detected
[2022-04-05 18:18:21.188] [info] a spec change detected
[2022-04-05 18:18:21.189] [info] a spec change detected
[2022-04-05 18:18:21.189] [info] a spec change detected
[2022-04-05 18:18:21.189] [info] a spec change detected
[2022-04-05 18:18:21.189] [info] a spec change detected
[2022-04-05 18:18:21.189] [info] a spec change detected
[2022-04-05 18:18:21.189] [info] a spec change detected
[2022-04-05 18:18:21.190] [info] a spec change detected
[2022-04-05 18:18:21.190] [info] a spec change detected
[2022-04-05 18:18:21.190] [info] a spec change detected
[2022-04-05 18:18:21.190] [info] a spec change detected
[2022-04-05 18:18:21.190] [info] a spec change detected
[2022-04-05 18:18:21.190] [info] a spec change detected
[2022-04-05 18:18:21.191] [info] a spec change detected
[2022-04-05 18:18:21.191] [info] a spec change detected
[2022-04-05 18:18:21.191] [info] a spec change detected
[2022-04-05 18:18:21.191] [info] a spec change detected
[2022-04-05 18:18:21.191] [info] a spec change detected
[2022-04-05 18:18:21.191] [info] a spec change detected
[2022-04-05 18:18:21.192] [info] a spec change detected
[2022-04-05 18:18:21.192] [info] a spec change detected
[2022-04-05 18:18:21.192] [info] a spec change detected
[2022-04-05 18:18:21.192] [info] a spec change detected
[2022-04-05 18:18:21.192] [info] a spec change detected
[2022-04-05 18:18:21.192] [info] a spec change detected
[2022-04-05 18:18:21.193] [info] a spec change detected
[2022-04-05 18:18:21.193] [info] a spec change detected
[2022-04-05 18:18:21.193] [info] a spec change detected
[2022-04-05 18:18:21.193] [info] a spec change detected
[2022-04-05 18:18:21.193] [info] a spec change detected
[2022-04-05 18:18:21.193] [info] a spec change detected
[2022-04-05 18:18:21.194] [info] a spec change detected
[2022-04-05 18:18:21.194] [info] a spec change detected
[2022-04-05 18:18:21.194] [info] a spec change detected
[2022-04-05 18:18:21.194] [info] a spec change detected
[2022-04-05 18:18:21.194] [info] a spec change detected
[2022-04-05 18:18:21.194] [info] a spec change detected
[2022-04-05 18:18:21.195] [info] a spec change detected
[2022-04-05 18:18:21.195] [info] a spec change detected
[2022-04-05 18:18:21.195] [info] a spec change detected
[2022-04-05 18:18:21.195] [info] a spec change detected
[2022-04-05 18:18:21.195] [info] a spec change detected
[2022-04-05 18:18:21.195] [info] a spec change detected
[2022-04-05 18:18:21.196] [info] a spec change detected
[2022-04-05 18:18:21.196] [info] a spec change detected
[2022-04-05 18:18:21.196] [info] a spec change detected
[2022-04-05 18:18:21.196] [info] a spec change detected
[2022-04-05 18:18:21.196] [info] a spec change detected
[2022-04-05 18:18:21.196] [info] a spec change detected
[2022-04-05 18:18:21.197] [info] a spec change detected
[2022-04-05 18:18:21.197] [info] a spec change detected
[2022-04-05 18:18:21.197] [info] a spec change detected
[2022-04-05 18:18:21.197] [info] a spec change detected
[2022-04-05 18:18:21.197] [info] a spec change detected
[2022-04-05 18:18:21.197] [info] a spec change detected
[2022-04-05 18:18:21.198] [info] a spec change detected
[2022-04-05 18:18:21.198] [info] a spec change detected
[2022-04-05 18:18:21.198] [info] a spec change detected
[2022-04-05 18:18:21.198] [info] a spec change detected
[2022-04-05 18:18:21.198] [info] a spec change detected
[2022-04-05 18:18:21.198] [info] a spec change detected
[2022-04-05 18:18:25.614] [info] a spec change detected
[2022-04-05 18:18:25.615] [info] a spec change detected
[2022-04-05 18:18:25.615] [info] a spec change detected
[2022-04-05 18:18:25.615] [info] a spec change detected
[2022-04-05 18:18:25.616] [info] a spec change detected
[2022-04-05 18:18:25.616] [info] a spec change detected
[2022-04-05 18:18:25.616] [info] a spec change detected
[2022-04-05 18:18:25.616] [info] a spec change detected
[2022-04-05 18:18:25.616] [info] a spec change detected
[2022-04-05 18:18:25.616] [info] a spec change detected
[2022-04-05 18:18:25.617] [info] a spec change detected
[2022-04-05 18:18:25.617] [info] a spec change detected
[2022-04-05 18:18:25.617] [info] a spec change detected
[2022-04-05 18:18:25.617] [info] a spec change detected
[2022-04-05 18:18:25.617] [info] a spec change detected
[2022-04-05 18:18:25.618] [info] a spec change detected
[2022-04-05 18:18:25.618] [info] a spec change detected
[2022-04-05 18:18:25.618] [info] a spec change detected
[2022-04-05 18:18:25.618] [info] a spec change detected
[2022-04-05 18:18:25.618] [info] a spec change detected
[2022-04-05 18:18:25.619] [info] a spec change detected
[2022-04-05 18:18:25.619] [info] a spec change detected
[2022-04-05 18:18:25.619] [info] a spec change detected
[2022-04-05 18:18:25.619] [info] a spec change detected
[2022-04-05 18:18:25.619] [info] a spec change detected
[2022-04-05 18:18:25.619] [info] a spec change detected
[2022-04-05 18:18:25.619] [info] a spec change detected
[2022-04-05 18:18:25.620] [info] a spec change detected
[2022-04-05 18:18:25.620] [info] a spec change detected
[2022-04-05 18:18:25.620] [info] a spec change detected
[2022-04-05 18:18:25.620] [info] a spec change detected
[2022-04-05 18:18:25.620] [info] a spec change detected
[2022-04-05 18:18:25.620] [info] a spec change detected
[2022-04-05 18:18:25.621] [info] a spec change detected
[2022-04-05 18:18:25.621] [info] a spec change detected
[2022-04-05 18:18:25.621] [info] a spec change detected
[2022-04-05 18:18:25.621] [info] a spec change detected
[2022-04-05 18:18:25.621] [info] a spec change detected
[2022-04-05 18:18:25.621] [info] a spec change detected
[2022-04-05 18:18:25.622] [info] a spec change detected
[2022-04-05 18:18:25.622] [info] a spec change detected
[2022-04-05 18:18:25.622] [info] a spec change detected
[2022-04-05 18:18:25.622] [info] a spec change detected
[2022-04-05 18:18:25.622] [info] a spec change detected
[2022-04-05 18:18:25.622] [info] a spec change detected
[2022-04-05 18:18:25.623] [info] a spec change detected
[2022-04-05 18:18:25.623] [info] a spec change detected
[2022-04-05 18:18:25.623] [info] a spec change detected
[2022-04-05 18:18:25.623] [info] a spec change detected
[2022-04-05 18:18:25.623] [info] a spec change detected
[2022-04-05 18:18:25.623] [info] a spec change detected
[2022-04-05 18:18:25.623] [info] a spec change detected
[2022-04-05 18:18:25.624] [info] a spec change detected
[2022-04-05 18:18:25.624] [info] a spec change detected
[2022-04-05 18:18:25.624] [info] a spec change detected
[2022-04-05 18:18:25.624] [info] a spec change detected
[2022-04-05 18:18:25.624] [info] a spec change detected
[2022-04-05 18:18:25.624] [info] a spec change detected
[2022-04-05 18:18:25.625] [info] a spec change detected
[2022-04-05 18:18:25.625] [info] a spec change detected
[2022-04-05 18:18:25.625] [info] a spec change detected
[2022-04-05 18:18:25.625] [info] a spec change detected
[2022-04-05 18:18:25.625] [info] a spec change detected
[2022-04-05 18:18:25.625] [info] a spec change detected
[2022-04-05 18:18:25.626] [info] a spec change detected
[2022-04-05 18:18:25.626] [info] a spec change detected
[2022-04-05 18:18:25.626] [info] a spec change detected
[2022-04-05 18:18:25.626] [info] a spec change detected
[2022-04-05 18:18:25.626] [info] a spec change detected
[2022-04-05 18:18:25.626] [info] a spec change detected
[2022-04-05 18:18:25.627] [info] a spec change detected
[2022-04-05 18:18:25.627] [info] a spec change detected
[2022-04-05 18:18:25.627] [info] a spec change detected
[2022-04-05 18:18:25.627] [info] a spec change detected
[2022-04-05 18:18:25.627] [info] a spec change detected
[2022-04-05 18:18:25.627] [info] a spec change detected
[2022-04-05 18:18:25.628] [info] a spec change detected
[2022-04-05 18:18:25.628] [info] a spec change detected
[2022-04-05 18:18:25.628] [info] a spec change detected
[2022-04-05 18:18:25.628] [info] a spec change detected
[2022-04-05 18:18:25.628] [info] a spec change detected
[2022-04-05 18:18:25.629] [info] a spec change detected
[2022-04-05 18:18:26.348] [info] a spec change detected
[2022-04-05 18:18:26.348] [info] a spec change detected
[2022-04-05 18:18:26.349] [info] a spec change detected
[2022-04-05 18:18:26.349] [info] a spec change detected
[2022-04-05 18:18:26.349] [info] a spec change detected
[2022-04-05 18:18:26.349] [info] a spec change detected
[2022-04-05 18:18:26.352] [info] a spec change detected
[2022-04-05 18:18:26.403] [info] a spec change detected
[2022-04-05 18:18:26.454] [info] a spec change detected
[2022-04-05 18:18:26.503] [info] a spec change detected```
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.