bayleeadamoss / zazu Goto Github PK
View Code? Open in Web Editor NEW:rocket: A fully extensible and open source launcher for hackers, creators and dabblers.
Home Page: http://zazuapp.org
License: MIT License
:rocket: A fully extensible and open source launcher for hackers, creators and dabblers.
Home Page: http://zazuapp.org
License: MIT License
Zazu is aggressive in adding itself to the startup. If you remove it and restart zazu it'll re-add itself. There should be some way for a user to remove it from the startup and keep using it as needed. There are a few ways to accomplish this.
As a user who often clicks the wrong thing
It would be nice to have search history I can traverse
So I can return to previous results
In the readme we should list we are anonymously tracking by default.
The first time they launch we should give them a notification that we are anonymously tracking.
There can be a setting in ~/.zazurc.js
to disable tracking.
If we switch to electron builder we can remove these dependencies from the non-app repo:
zazu-v0.1.3-darwin-x64.dmg
)nupkg
file?auto_updater.json
file. Possibly on zazuapp.org ?https://github.com/jenslind/electron-gh-releases/blob/master/docs/2.x/how-to.md
https://github.com/electron-userland/electron-builder
https://github.com/electron-userland/electron-builder/wiki/Code-Signing
https://travis-ci.org/tinytacoteam/zazu/builds/167393493
Maybe something like:
https://github.com/winstonjs/winston
Used universally.
Right now, a theme determines which icon shows up. Zazu needs to be able to give the theme the icon instead.
https://gist.github.com/domenic/ec8b0fc8ab45f39403dd
https://developer.github.com/guides/managing-deploy-keys/
just needs to be modified to run npm run docs:deploy
The issue is that their require
is cached in our node require.cache
, we could possibly clear this per plugin before requiring.
I think it's an unnecessary dependency.
We should provide a debounce for plugins. We want it to first at the end, but we also want the first one to fire immediately, and we want all subsequent responses to return the previous promise. So it works a little different than other debouncers.
One of the issues we ran into was getting a plugin working. A lot of the issues were syntax errors and general api issues. If we had a boilerplate with basic tests and example blocks this could be a lot easier path to go down.
We could litter the code with doc links.
Storing an api key in your zazurc.js
file means it can't be backed up to github or other public type places. There should be a way to easily add encrypted data to this file. Possibly related to the package manager #32
It would be great if the plugins could have a shared context between them all, great for counters, connection or other shared things.
I'd like an option to disable/enable the mouse support.
Often, when typing I hit my trackpad and it shifts my results, which is undesireable. Mouse support is so common, I'd say this should be opt-in behavior.
Select all/copy/cut/paste inside of zazu.
To reproduce:
If a plugin fails to update, we don't tell the user anything.
If a single plugin fails to load, we should tell the user it failed to load, and still give them a notification when the process of updating is complete.
We could also think about having a more reliable "update" then a git pull
and reloading it.
If you compile zazu, it stops sending notifications.
The problem is when we compile with asar
we need it to unpack the notifications executables.
https://github.com/mikaelbr/node-notifier#within-electron-packaging
https://github.com/tinytacoteam/zazu/blob/master/tasks/release/linux.js#L37
https://github.com/tinytacoteam/zazu/blob/master/tasks/release/osx.js#L39
https://github.com/tinytacoteam/zazu/blob/master/tasks/release/windows.js#L37
Often results can have multiple actions based on a modifier key like shift/alt/cmd/etc.
Possibly a Decision
type of block to dynamically pick the connections
.
Validate:
If your file is not correct then zazu will run however you won't be able to quit unless you kill the processes.
I've noticed every now and then zazu runs slow. My theory is that this is based on the file finder locking the thread.
If this is the case we could test it by changing the interval to 0 and seeing it be laggy all the time.
This could be fixed by using child_process.fork
Another theory is that the setInterval stop working when a laptop is asleep, and upon waking catch up by calling the method x number of times, which slows it down. This could be tested by sleeping the computer and, upon waking it, try and use zazu.
We could fix this by adding debouncing on top of the setinterval.
Or I my hunch if totally off and we should look into other issues.
External blocks aren't logging correctly.
https://github.com/tinytacoteam/zazu/blob/master/app/blocks/externalBlock.js#L11
should be data.pluginId
Select a text and type a shortcut to show the text in Large Type.
We can release a new versin of Zazu with backwards incompatiable changes to themes OR/and plugins. A user has no built-in interface for updating dependencies.
Zazu can maintain a list of breaking changes by type:
themes: ['0.1.0 - 0.1.5', '1.0.0 - 0.2.0'],
plugins: ['0.1.0 - 0.1.5', '0.3.0 - 0.2.0', '1.0.0 - 1.3.0'],
Then, plugin developers can mark in their plugin what versions this code was tested on:
module.exports = {
name: 'Clipboard',
zazuVersions: ['0.2.0', '0.3.0', '1.0.0'],
}
Now, it can warn the user based on these things. We will NOT disable plugins based on these settings, just warn the user. These plugins could still be working just fine and we should lean on the side of the power user.
This enforces a fail forward type of design, where as a user the only interface I have is to update zazu or my plugins.
Given I download a version of zazu
When I install a plugin that works on my version
Then everything works as expected
Given I download a version of zazu
When I install a plugin that doesn't works on my version
Then it prompts me that the plugin is not compatiable
And gives me the option to check zazu for updates
And gives me the option to check plugins for updates
Given I have an old version of zazu
And I have plugins installed and working
When I update zazu
And I now have plugins that are not compatiable
Then it will prompt me that some plugins are not compatiable
And gives me the option to check my plugins for updates
When no window is focused you can't toggle devtools it throws an exception. We should handle this more gracefully.
Uncaught Exception:
TypeError: Cannot read property 'toggleDevTools' of null
at click (/Applications/Zazu.app/Contents/Resources/app.asar/helpers/menu_template.js:61:43)
at MenuItem.click (/Applications/Zazu.app/Contents/Resources/electron.asar/browser/api/menu-item.js:59:9)
at Function.executeCommand (/Applications/Zazu.app/Contents/Resources/electron.asar/browser/api/menu.js:121:15)
This gives themes the ability to decorate based on holidays.
Here's a module I found that gives us the correct functionality:
https://gist.github.com/blainesch/b710aece2d679207340b6c8793817f6b
Way to reproduce:
Uncaught Exception:
Error: Object has been destroyed
at Error (native)
at MainEmitter.globalEmitter.on (/Applications/Zazu.app/Contents/Resources/app.asar/background.js:65:17)
at emitNone (events.js:85:20)
at MainEmitter.emit (events.js:179:7)
at MainEmitter.emit (/Applications/Zazu.app/Contents/Resources/app.asar/lib/globalEmitter.js:20:11)
at menuTemplate.click (/Applications/Zazu.app/Contents/Resources/app.asar/helpers/menu_template.js:64:21)
at MenuItem.click (/Applications/Zazu.app/Contents/Resources/electron.asar/browser/api/menu-item.js:81:16)
at Function.delegate.executeCommand (/Applications/Zazu.app/Contents/Resources/electron.asar/browser/api/menu.js:119:40)
We are currently using git-clone
we should switch to nodegit
http://www.nodegit.org/guides/install/electron/
Originally, I went without nodegit since it couldn't compile on windows and linux, but I think it's a better solution then relying on users having git installed.
This could be great for testing plugins, or adding/removing plugins.
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.