Code Monkey home page Code Monkey logo

engram's Introduction

Engram

A sauced up document editor.

Issues

We are constantly improving Engram! If you encounter any bugs feel free to create an issue on github or message me @ ~dalsyr-diglyn.

Building from Source

It's reccomended to boot a fake ship in order to build engram from source. Once you've got your ship running, you can start by running the following commands:

> |merge %engram our %base
>=
> |mount %engram
>=

In a new terminal, navigate to your ship and copy over your files from the /desk folder into your ship's /engram folder.

$ rm -r ./zod/engram/*
$ cp -r ./engram/desk/* ./zod/engram/

While in this terminal build the ui files. This will create a build folder we will use later.

// from the ./engram/ui folder
$ npm install
$ npm run build

Once the desk is copied over and the ui built you can navigate back to your ship. From your ship commit and install engram:

> |commit %engram
>=
> |install our %engram
>=

Now you can open up landscape in your browser, navigate to /docket/upload and upload the build file we created earlier; it will be valled dist. Be sure to select engram as the desk. Then hit glob! to run the upload.

Once that's done you can run engram from landscape.

engram's People

Contributors

0xtimmy avatar zach-martin avatar cklaassen avatar drunkplato avatar aryanmathur2003 avatar

Stargazers

 avatar  avatar  avatar Rome of Oxford  avatar Josh Lehman avatar S Knutsen avatar

Watchers

 avatar

engram's Issues

Urbit State

Store information like:

  • current ships
  • connection state

Filetree UI

https://www.figma.com/file/BzfIRl7ewp3NPw4IvnZSBW/Engram?node-id=80%3A253

The filetree component

  • a heading with the user's id & a connection status symbol
  • a file tree that lists documents & simulates folders
    - documents will be provided as a flat list, document names with a / will need to be rendered as being children of a folder
    - ex {folder-name}/{doc-name} should be rendered as {doc-name} in a folder {folder-name}

Document Sharing

  • users should be able to share access with other ships
  • edit & view permissions
  • groups

Root Page

a default page to display when no document is open

Fortawesome In package.json

Since some of the code used to use font awesome, we still have that in the package.json, which causes issues when you try to install it from a non-developer computer (when we don't have the private key for our font-awesome account). As the frontend no longer uses this, we should ensure users don't have to access our token to install our document.

Library sidebar style tweaks

This is from a design for the stealth documentation site we are working on. The uppercase headers with gray text + the simplicity of the dropdown is why I am posting it.

image

App Router

Build a react router;
key routes:

  • root -- path: "/"
  • document -- path: "/:id"

this will let us send modifications about the current document from anywhere in the app

First Document Open Doesn't Show Whitelist

When you create a document, the first time you open up the share panel it will not show you as having access to your own document (when it should be showing you as owner)
Screen Shot 2022-09-14 at 8 08 45 PM
After I close and open the document again it now shows me as the owner of the document
Screen Shot 2022-09-14 at 8 08 58 PM

Document Initiation on Open From Remote User

When you first open a document, our code looks at the other ships to fetch the data that you need, so the data you missed since you last had the document open. We achieve this by gathering the Document state and the Settings state, however this misses one thing, the Update state.

Let me give an example scenario that I ran into during testing. We have three ships, all have already connected to the document before, but only two are open right now, lets say ~zod and ~bus. ~bus is writing changes and sending them to ~zod, but not adding it to its document state yet as ~zod is in the zone working. ~bus closes its document, so now the only place those changes are stored in is ~zods update set. Now if ~nut boots up the document, it will query the document state and settings from ~zod, however fail to gather any of ~buss changes.

Plausible Solutions:

  1. We add the update set to the %init query for subscriptions
  2. We find a way to auto-merge updates on the query into the doc state (I don't think this one is plausible as the %init arm never touches the frontend

New Nodes

  • Table
  • Video Embed
  • Better Selection UX
  • Block specific links & menus

Adding a User to your Whitelist Generates a "Bad Wire" log

When adding users to a whitelist, sometimes the Hoon backend logs a "bad wire" notification.

"Reached agent on wire"
/settings
"bad wire"
"Reached agent on wire"
/createsnap
"bad wire"
"Reached agent on wire"
/make
"bad wire"

This is accompanied by the frontend hanging and refusing to move the document away from the current one, however it is still receiving data in the console. There are no frontend errors that show up with the "bad wire" notification in Hoon.

Document Schema

  • Header
    - [X] Title
    - [X] Description
    - [X] Meta
  • Body
    - [X] Paragraph
    - [X] Heading
    - [X] Blockquote
    - [X] Aside
    - [X] Lists
    - [X] Checklist
    - [X] Inter-document links
    - [X] Inter-document embeds
    - [X] Images
    - [X] Basic Marks

Menu Plugins

  • Side Menu
    - [X] Plugin
    - [X] Component
    - [ ] Implementation
  • Highlight Menu
    - [X] Plugin
    - [X] Component
    - [ ] Implementation
  • Slash Menu
    - [ ] Plugin
    - [ ] Component
    - [ ] Implementation

Document CRDT

  • deterministic document merging

  • intention preservation

  • build XML CRDT

  • build prosemirror binding

File Tree Shows Remote Icon for Local Files

When creating a local file on 0xtimmy-development-unsub, the file is marked with a ~ (denoting that it is a remote file). This is incorrect as it is a local file, and thus should be represented with a dot.

All the documents shown in the following screenshot are local documents:

Screen Shot 2022-09-14 at 6 45 18 PM

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.