Giter Club home page Giter Club logo

orbit's Introduction

Motion

A simple CLI for running Javascript projects.

Motion repository has been moved inside Pundle's monorepo for better maintenance

Motion can now be found at steelbrain/pundle/motion

๐Ÿ™‡ Thank you everyone who used Motion in their projects. Motion will continue development in it's new home.

orbit's People

Contributors

andreypopp avatar collinhundley avatar kdy1 avatar natew avatar ncammarata avatar pleerock avatar ryandrew14 avatar steelbrain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

natew

orbit's Issues

General error handling system

This will be helpful through development:

  • Add global hook in app to catch uncaught errors
  • Add simple root Banner that slides up from bottom and has states (error=red, warn=yellow)
  • Can clear banner manually top right x
  • Show errors in banner nicely
  • Use componentDidCatch in root to catch and show something probably too

Plan

for demo video (dev-side):

  • Get Ora changing it's title/results based on switching apps again (hardcode search)
  • Hold option mode to show
  • Tray: show summary of context
  • Fix peek showing up accidentally
  • Fix gicon offset + better icon for docs
  • Slack conversation style
  • Document peek style
  • Hardcode highlight words
  • Highlight words nicer styling

for OCR working:

  • Content finding algorithm
  • Character splitting / line finding part
  • FF NN / cache for words
  • Potentially dictionary corrections for combined words
  • Sentence subjects finding for vocab check
  • Sentence splitting / styles
  • Better word highlight style
  • Peek fixes for hover word in many locations
  • Show search results in peek window for initial version
  • Adjust timing for desired feel for hovering stuff
  • Potentially make holding down OPTN the default to see words
  • Algorithm for clearing the words / re-scanning

for Grouping

  • Need some good example data to test on
  • Drill in then expands to show full list
  • Peek shows them too in some form

for Polish:

  • search results show number of results based on confidence
  • cant click to move cursor in search area
  • Peek arrow is behind window at first
  • Peek needs to adjust arrow when near bottom
  • Peek clear on type
  • Peek dont show if scrolled (needs more fix)
  • Peek window/button controls improvements
  • Peek readability fixes
  • Peek showing to quickly when moving between list items, causing it to move up or down one often when you just meant to move your cursor out
  • fix close button and small toggling glitch issues
  • enter to open item
  • scroll down to item when moving using keyboard
  • Peek only animates nicely after first animation
  • Peek may want to have a find bar at the top

for Integrations

  • Fix oauth flow, moving the mouse wasnt very successful
  • Settings panel needs a lot of fixing/improvement
  • Re-oauth strategy for gdrive still isn't figured out (!!)
  • Test syncers for various rooms
  • Drive needs to sync further back
  • Add in settings a way to test clearing and re-syncing data and setting limits

Allow me to manually resync

It would be helpful if I could manually resync certain sources. For instance, orbit isn't actually being loaded into my issues at the moment

Confluence workaround

Confluence and Jira may be really tricky. Atlassian makes it really hard to add integrations, you have to be admin even to access your own permissioned tickets it seems.

Confluence seems to have RSS though. So we could perhaps just have it crawl the RSS feed. That may not give us a lot though.

Perhaps there's a sitemap.

Nate week of Jun 12th

Meta ticket, goal is to focus in on search and get it working well

  • Allow multiple integrations (+)
  • Revamp settings panes to be more useful
  • Remove bugs in keyboard navigation
  • Fix search bugs bad states and some slowness
  • Peek page for Gdocs
  • Improve inline highlights for searches of all types

demo todos

  • peek hover removes context
    https://v.usetapes.com/Wz5McIkbkV
  • markdown peek view
  • context should follow typing in contenteditable rather than just on tab switch
  • response items should use toBold returned by search store
  • show subtitle (in this case there's a "service fees" subtitle that's being returned)
    image
  • make clicking an item open it instead of go into it
  • search query covers up placeholder
    image
  • when I cmd+tab to app, it shows ghost of peek
    image
  • peek error ~5 times when I run run electron
    image

minor

  • x does not close window

Cleanup login window

I suggest it be outside of the miller. Search doesn't make any sense if you're not logged in

next

  • fix old instances of things being kept around after hmr
  • Debug prod bundle so you can insert docs
  • Build script prod => electron
  • Status exploration
  • selectBar button states + deselect on
  • UI.Checkbox

queue for next ticket:

  • ๐ŸŒ€ typescript-babel to come out
  • Potentially get store hmr state save once we have that because we have this.module

Fix type sub-system

We could probably benefit quite a bit from just a couple days of type work.

In order, you'd build them up:

  1. decor-* sub-packages, used by
  2. decor which is a decorator builder, used by
  3. black which puts together the decorators for views/stores
  4. the apps: verifying @view and @store properly type things

And then finally just fixing the various type errors in Desktop and other packages.

Basic p2p sync system for metadata

Since we're doing no-cloud, we need a way to let people curate a few things. To start it will be just "Pin to top of search" and "Pin to Home" and then later we can have a variety of things.

Could use Gun.

Steps:

  • Implement basic p2p database that stores some info
  • Add Pin Search Result and make it work with search
  • Make it work for productionizing

And then we need Home:

  • Implement Pinned items for Home (Pin makes them appear at top for your team for 24hours)
  • Unpin/pin testing and working with a few clients

Non-Local (API Driven) Search

This could augment to make our search broad as well as good. We can do API requests as they search a little bit more debounced and get search results back from the various integrations more fully.

Steps would be implement with Slack first:

  • Get Slack broad search in
  • Have it de-dup from the local results
  • Refine it to work throughout UI

And then do it with other integrations.

Week of Sep 18th

Doing this both as a test of orbit (we can make sub-issues, see if we can correlate them), but also because we have some good diverse stuff we can do.

Me:

  1. Basic wireframe style mock of a landing page with sections for the primary features we'd show

Think we're ready for this. It won't take much time and will help us refine how we'd pitch it. Plus it serves as a sort of living documentation of what our current beliefs are of it's primary values. Also, encourages us to design for that page and constantly be thinking of "how does this affect our pitch".

  1. Design out properly nice "Person" and "Project" panes.

This will go well with 1, because we can showcase them in the page. I think good calendar filtering for people is really important, and nicer looking feeds + implementing basic stats/graph for project. Here's some design inspiration: person, calendar.

  1. See if we can run an "API" process in a webworker and sync it's pouch with main-thread pouch.

This is certainly doable and I can patch RxDB to see how hard it is. If it takes <2 days, which seems likely, I'll pull the bandaid here. Upsides would be huge:

  • Remove couchdb
  • Remove docker
  • Potentially also share the pouchdb even, so remove a big overhead of tons of http calls/syncing
  • Be able to HMR our api
  • Be able to develop our API more easily with simple chrome inspector integration
  • Also opens us up to running more processes for specific things
  1. Do google or jira oauth integration on client side using just Passport (not superlogin).

Goes with 2. If we can make this work without too much trouble, then we don't need superlogin (for oauth stuff).

Keep in mind 2 and 3 don't mean we need to dump superlogin or having our own infrastructure. That's still all there, and will be helpful in the future for user accounts which can encrypt all their oauth stuff and sync them across devices/teams, etc. But that can be later-beta feature.

Nick:

  • Yo dawg, I hear you like orbit

Friday Oct 27

Terms, feel free to suggest better terms:

  • Ora: My suggestion for the name of the context window
  • Context: The smart list of things we display in Ora, that uses:
    • Focus: What you are looking at currently
    • Source: All the data we use to serve context

Research

Want to pin down a potential sales vertical as it's highly valuable and more narrowly focused.

  • CRM software

    • Salesforce - compile doc on their features
      • What they claim to do in terms of context/integrations
      • How do they work in practice today
      • Do they integrate docs? This seems big. Google docs often contain tons of info. Realtime context seems really valuable here.
  • Sales in general

    • How sales teams structure their knowledge
    • How sales people function during a call (when they dont know something)
    • What is the popular software / software combinations
  • Intercom/chat: Good market-share data on these things

  • How valuable is generalized improved search/context without extreme vertical focus?

    • Auto source attachments/links
    • Topic modeling
    • On device/offline + fast
    • Outside sources / history (automatic too)
    • Pinning results to top
    • Having personal email as a source
    • Doing this all securely and with no on-prem install

Ideas to vet

  • Voice based Focus
  • Meeting focused features (pin to upcoming meetings)

Sources

  • Browser history + activity. Likely want to have scoped domains not all history as v0
    • This gives us really rich information, especially if we track "live time on site"
  • Following links/attachments
    • For email/slack often you have attachments + links to things
    • We can index these and be better than search typically is there
    • In fact for stuff like slack, we could just do links/attachments to let us filter down the noise, and then add in only "important" conversations
  • Manually adding
    • Highlight, right click > Add to Orbit
    • Right click on site > Add domain to Orbit, Add page to orbit

Product

  • Focus + slack. This is both valuable to demo and helps setup intercom.
  • Focus + current page find important content. This gives us broad power (gmail, any site really).
  • How sharing between people works
    • Custom content sources, pins, etc
    • Maybe we can store this not on our servers even just to prototype, and use slack or something as a syncer

Improve Mobx/Logging Dev Setup

Right now we have a pretty ad-hoc log/debug system.

We have:

  • @mcro/debug which is imported and used in most packages for logging
  • Mobx used in many places, through @mcro/automagical which has some logging
  • The react helper imported through @mcro/black which handles most reactions, and weirdly allows you to control logging right on the action

The changes are not too complex:

  1. Have logging "off" by default
  2. Add a nice and simple/easy global API for enable/disable all logs (right now i think debug is global, but log would be better)
  3. Use Mobx Spy perhaps to help log everything
  4. The reactions have some logging logic though already, which is nice because it can listen for "cancels" and prevent logs, so ideally have some setup for logging everything vs logging just important things (not cancelled). See automagical.ts and the react.cancel syntax used in places. They also can only log reactions that change state, which should be an option.
  5. localForage used in @mcro/debug to remember log settings
  6. Maybe a nice way to add a filter
  7. This could look like: log.all() log.none() log.state() log.actions() log.only() or something like that

If we can strip log statements at prod we can also log a lot more stuff without perf concerns.

Oauth Key Management

One big thing we have to figure out is how to manage the oauth keys. Since it comes from our accounts, we almost need a way to generate or cycle through a pre-generated big list of orbit oauth keys for every team that signs up. This may actually be one of the more tricky things to figure out left.

Need to talk to someone really familiar with this to get better feedback.

Backend: Integration Syncers

We need to really improve the integrations from bottom to top. This will capture the import side.

Broadly we need to:

  1. Upgrade various syncers to import data better and do transforms to make it easier to work with.
  2. Add People syncers to various integrations and normalize relations
  3. Support updates and deletes better
  4. Add some testing around them

Make sure everything is a bit more stable especially over time:

  • Slack: sync a room, have some updates, sync again
  • Github: sync an issue, add some comments, sync again
  • Gmail: sync some email, add some more, sync again
  • Ensure timestamps are normalized to bitCreatedAt bitUpdated at properly
  • Slack add an attachment sync ability to at least get preview of links/files
  • Add automatic space overflow checks and delete old items if need be

Then we should add Jira and Confluence:

Profiles

Splitting into own ticket as it can be prioritized differently.

  • Add People syncers for Github, Google Mail/Docs
  • Figure out and implement architecture to collate People
  • Have a working test setup for importing a few People and collating

Productionizing

Should have the following setup for launching the app:

  • Way to invite people to join your Orbit
  • If we use Slack as the sync point for p2p database, then we can avoid all signup on our end
  • At least get an UID/teamname + Email, download
  • Send them email welcoming with invite link to send https://join.tryorbit.com/1234
  • Make app install process really smooth
  • Show integrations pane to start
  • Guide through adding integrations
  • Have super easy links to invite teammates throughout

On the app/builds side:

  • Better automation for releasing updates
    • ideally a branch we push to that releases to our own internal test apps
    • and then a branch we push to after manually testing that goes out
  • Electron auto update, fix it up again and test
  • Automatic process to update the download link on the site too

Context

  • prioritize same repos
  • prioritize time (or slightly later)
  • prioritize people

Basics

  • Button to add current page
  • Ability to toggle debug info

image

  • overlapping labels
    image

  • ability to bucket (pg/stripe/personal) through UI. It currently works through localStorage setting.

  • click item to go to url. Needs to pass url from windows.js I think

  • selecting text in chrome sets search

  • don't show big spotlight orbit

Multiple highlight types on ListItem

List item basically needs a few different types

  • highlight: current index for up/down keys)
  • selected: items you've already selected
  • ghosted?: like neat-python in this example. Was selected but is not currently.
  • inactive: normal

image

Roadmap

Operation: Matt

  1. Get a basic splash site so he can ask higher ups
  • Polish demo for a short looping video for site
  • Redesign and reword copy on site
  • Get a test build working to install on his CPU that ideally we can iterate with
  • Work with him in person to get syncers working + app set up
  • Auto updating builds
  • App icon, electron tray icon

Alpha program

Goal: Get a few people using it and make them love it while iterating using their data.

Specifically: Get Walmart Labs, Target Labs, Formidable, Unity, Toyota TRD Research, Remedy, Pavlov, Front, OpenDoor, a handful more using it. Set up a system that lets us iterate and work with them in a good feedback loop. Also focus on features that make them excited, so we can start building advocates.

  1. Communication
  • Slack channel or facebook group thats active and fun
  1. First install experience
  • App download page with bundled app
  • Company onboarding -- should we set up prod servers with login/superlogin? or keep it siloed
  • Having it figure out teams/projects with you

Beta plan

May be worth trying to get a few more big companies on board during the alpha/beta to get their specific feedback. We also should just start curating a best-idea list of what we should work on beyond just bugfixing.

  • Integrations
  • ...

Upgrade chaos monkey stack

One pain point is build --watch.

  • the build-all script should watch package.json/tsconfig.json and if it changes, restart that builder
  • We should detect somehow if it's not running, and wait for it to run before apps continue
  • That should be inside the nodemon part, so if an app restarts and build --watch isn't running, it waits again
  • it causes all the apps to restart a bunch, but this shouldn't happen on second builds (at least for tsc, maybe this is babel's doing?) lets find/create tickets for that.

app also needs to restart or re-connect when desktop loses connection/restart:

image

Product

Product needs both perf and correctness in many areas.

  • Needs to resize to screen size changes
  • Search/peek interaction stuff needs bug fixes
  • Some keyboard nav bugfixes
  • Peek windows all need work:
    • Github
    • Slack
    • GDocs
    • Gmail
  • Profiles:
    • Need to unify across Gmail/Gdocs
    • Unify across Github
  • Remove teams for now and just make above work well
  • Search needs to show people as well maybe in dedicated area at bottom
  • Filtered search by Slack room
  • Bugfixes for search getting stuck low opacity
  • Final bugfixes for peek going in/out
  • One more flicker when switching away from Orbit
  • Keyboard actions for opening things for various integrations
  • Better search preview of items content
  • turn off pointer events in docked when hidden
  • Search could work for finding rooms based on their topics
  • Seen orbit process sitting at 30% for a while now a few times: add monitor to restart it

Settings Panes

Settings panes all need a lot of work:

  • Make cmd+, link to settings pane
  • Make the process of adding them more understandable and easy
  • Iron out any Oauth wierdness
  • Have it re-open once the oauth completes
  • Have global settings show at top:
    • Maximum disk space to use
    • Start on login
    • Shortcut with link to Keyboard Shortcuts and notice saying "for cmd+space manually set it up"
  • All settings windows should have:
    • Remove integration (needs to delete the data too)
    • Stats on number of things synced
    • Checkbox for "Smartly reduce disk usage for old/stale documents" default on
    • Last sync info nicely
    • Re-sync button
    • If errors are happening, show in a small area
  • Show bit count / last sync info in the settings subtitle in settings pane
  • Fix the Github pane quite a bit
  • Implement Drive/Mail panes

Size management

Probably needed somewhat early on.

We should have an umbrella Setting for global settings. We can put information there.

  • Setting.values.diskSpaceTotal
  • Setting.values.diskSpaceUsed

Then syncers should basically figure out what to do based on this limit. Initial setup:

  • Need to figure out how we estimate size of things in DB
  • Once we have that, initally just have a syncer delete old ones after running when its near cap

Down the road with p2p sync, pinning, and fallback api search, we can have pinned docs never be culled.

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.