Giter VIP home page Giter VIP logo

zazu's People

Contributors

afaur avatar amjith avatar antoinepairet avatar avaly avatar black-snow avatar blakek avatar brandonhamilton avatar brpaz avatar carlosperate avatar danielbayerlein avatar eisenkolb avatar eldinoyev avatar halvves avatar iansinnott avatar idleberg avatar ingro avatar ionphractal avatar jarvys avatar jgoday avatar josnun avatar lazamar avatar linonetwo avatar marcosnils avatar oscarbarrett avatar plrthink avatar romannekhor avatar singuerinc avatar sqlwwx avatar szwacz avatar twang2218 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zazu's Issues

Disable Mouse

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.

Scoped blocks should have their own icon

Right now, a theme determines which icon shows up. Zazu needs to be able to give the theme the icon instead.

  1. Install the clipboard plugin
  2. Open zazu
  3. Use the clipboard keyboard shortcut to launch zazu
  4. ASSERT the zazu logo still appears instead of the clipboard logo

Results aren't sorting correctly.

  1. Have file finder installed
  2. Have system installed
  3. Type in "lo"
  4. Scroll to "lock" and click it
  5. Repeat a few times
  6. Assert lock is not the first result.

Debounce

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.

Plugin Boilerplate

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.

NodeGit

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.

Notify about tracking

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.

Code Signing

zazu_and_desktop

My work computer won't allow me to overwrite this setting, I had to compile locally.

Electron-builder (#56) has these docs.

Traverse search history

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

Error while quitting zazu

Way to reproduce:

  1. Open the About page.
  2. Close the About page.
  3. Try to quit Zazu.
  4. Exception.
  5. Profit??
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)

Locking Issue

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.

Encryption

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

Validate `.zazurc.js` file

If your file is not correct then zazu will run however you won't be able to quit unless you kill the processes.

Toggle dev tools

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)

Better message when plugins fail to update

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.

Shared Context

It would be great if the plugins could have a shared context between them all, great for counters, connection or other shared things.

Dependency handling

Problem

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.

Proposed Solution

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.

Philosophy

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

Live reloading plugins breaks when plugins have dependency updates

The issue is that their require is cached in our node require.cache, we could possibly clear this per plugin before requiring.

  1. Install an old plugin without outdated package.json dependencies
  2. Open zazu
  3. Assert plugin works
  4. Update plugins
  5. Assert plugin is broken
  6. Restart zazu
  7. Assert plugin works

Startup Item

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.

Validate Plugins

Validate:

  • plugin icon
  • Block types
  • Block data
  • Script formats
  • Return values

Notifications Fail when Compiled

Modifier Keys

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.

Switch to electron builder

If we switch to electron builder we can remove these dependencies from the non-app repo:

  • yargs
  • q
  • gulp-util
  • fs-jetpack
  • gulp (if we convert gh pages task)
  • asar
  • appdmg
  • rcedit
  • Ensure correct naming (zazu-v0.1.3-darwin-x64.dmg)
  • Widows needs a nupkg file?
  • Maintain a auto_updater.json file. Possibly on zazuapp.org ?
  • Signed app
  • Test installs manually
  • Make final tag release to test CI uploads

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.