Coder Social home page Coder Social logo

upwelling-code's People

Contributors

blaine avatar daiyi avatar okdistribute avatar orionz avatar

Stargazers

 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

upwelling-code's Issues

Sync button

A button that syncs the changes to the server

Draft list

/documents/:id/drafts

This will be useful for debugging at the very least, and I can also imagine myself really needing this 'broad overview' of all drafts that people are currently working on.

  • Name (layer.message)
  • Authors
  • Additions / - Deletions
  • Edited X days ago (relative date)
  • Click a draft and goes to /document/:id/draft/:draftid
  • ?admin=true, If admin mode turned on then you see all layers, if not, then you only see your layers & shared layers

Frame 7

Add sticky notes to a layer

This could be an array of notes or a map of notes and notes are basically arbitrary data but should have an id.

The id could be used in a mark or as a reference in another note, for example, to create comment threads and discussion

View Mode

On any particular layer you should be able to toggle whether the syntax highlighting and track changes is on or off.

Show when the document isn't saved

Need some way to indicate the doc isn't saved yet so people don't lose their work. This applies in both the server and non-server context, because we're only saving 1 second after the user stops typing.

Datetime(s) for layers

To get the 'updated X minutes ago' feel. Questions:

  • is this the time it was synced to you/time you received the layer?
  • time it was originally created?
  • time it was last editied

distracting UI bugs

  • remove hashes from tabs
  • make the visible tabs stand out more
  • fix bottom tab styles
  • make the hover state make sense
  • color by layer, or by user - for demo
  • draw top border on bottom tabs
  • make it more obvious what layer you're about to type into
  • bonus! animate merging tabs downwards

Make less slow

I think we can get some measured performance improvements by:

  • remove all await in click handlers
  • remove all await in typing handlers
  • call loadDoc fewer times from http
  • investigate if this fixes the issue, if not add more to this list

Toggle off shared layers

Exploring what it means to have 'quiet space' and not get notified of other people's new layers

Make track changes make sense

  • Show changes with color by the author id within a draft
  • "Show Changes" toggle that turns off all colors
  • "Show Changes" mode OFF by default
  • Click historical layer and see author colors
  • Bar on left of changes that are between layers

Tab UI

Make the UI a bit more ready for demos! right now the layer ui is just a list (ul/li) T_T

Mark testing

Marks seem to be broken, but blaine will confirm and create some tests

Author names

We should have a 'me' concept of my author name, and every change and layer is annotated with it

Consistent root

Any time root changes, merge root back into the other layers

You can only edit your own layer

I think we can do this in the text box by making editable = false if your local author name is not the same as the layer author name

Global comments

We discussed this but sounds like we probably won't get to it

Have a working version deployed on a domain through CI

This will be useful so that the designers can see it deployed and test it without building it locally.

Vercel requires node 14 but react-scripts v5 needs node 16 to run the tests and build the app..

We probably want to use GitHub Actions or Netlify instead if we need node v16? Unless someone can figure out Vercel

Visible layers

Toggle multiple layers 'visible'

This would probably just be in the renderer layer, and not saved to automerge document. It would be great to have this setting stored in local settings storage (similar to how the author name is stored) so if you refresh the page it won't reset your settings

Send the layer objects to the component

<EditReview layers={layers} />
<TextArea layer={editableLayer} />

Better Paste

When you paste, do a diff first and then convert that to the automerge operations

Merge button

Merge button

  • is only available if you've rebased to root
  • literally sets root to your draft
  • the previous root, we know what changes between those two layers

Side-effect: should we rename root to latest? - yes.

backend api with test suite

Let's make a test suite that covers some basic functions we expect to need:

  • Multiple documents stored in the local filesystem, with a title and text crdt
  • Subscribe to changes on a document so you can re-render the front end
  • Make a version with some metadata attached to it. For example, at minimum, an author's name
  • Discussion and comments about a document, change, or 'set of changes'
  • Going back in time and 'plucking' a change and applying it to a future version of the document
  • Historical versions over time
  • See related versions to this version
  • See all named documents
  • Check out to a previous version
  • See changes from person A but not person B
  • Named versions
  • Store documents on a remote HTTP server. What is the frequency we can expect to save these with a reasonable performance hit?
  • What documents are related to this document? (forks, previous versions, conflicting versions, etc)
  • Comments and conflicts on a particular paragraph
  • Get changes or document versions by user from a remote http server
  • Copy/paste from google docs into a peritext document
  • See # of pending changes between named versions
  • What else?? [your ideas here]

If you have any inkling to think about an ideal API, now is the time to sketch some ideas!

Test example: https://github.com/inkandswitch/upwelling/blob/main/src/backend/Documents.test.ts

Save to S3

Run a server on glitch and save/retrieve from S3 from the server response handlers when NODE_ENV=production.

Use S3 environment variables for access key and access secret

A developer should be able to toggle NODE_ENV=dev to save to the local filesystem rather than to S3. For example,

NODE_ENV=dev node ./server/index.js

or

NODE_ENV=production S3_ACCESS_KEY=asdjfhsadf S3_ACCESS_SECRET=asdfjksfd node ./server/index.js

TextArea input

  • copy/paste
  • selection cursor shouldn't go to the end of the text every character you type

What do the ids mean?

We have this concept of a document id and a root. This is untested now and should be a bit more explored.

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.