Code Monkey home page Code Monkey logo

free-roam's People

Contributors

cofinley 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

free-roam's Issues

Collapse/Expand Blocks

Currently, one can expand/collapse blocks using the arrows and thread lines, but the state is passed in from the Editor/tree level and is messy. The result is that the thread lines and arrow toggles can't toggle back the state after the other one has. The same mechanism has to do the toggling on and off one at a time. The BlockActions component should probably get included at the Editor level instead of the Block level in order to keep state from going back and forth through too many levels.

Block Deletion

When typing Backspace at the start of a block, several things can happen:

  • If block is empty, remove it
  • If not empty, merge into closest visually-adjacent block above
  • If it's the first/only block on the page, don't delete

React Rewrite

After trying things in jQuery, I soon realized I'd need React or something more reactive if I wanted to keep track of blocks and propagate updates throughout the system. I've decided to use this as an opportunity to learn not only React, but its latest conventions.

Current, long-running todo:

  • Markdown rendering of bold, underline, etc.
  • Linking/hot-creating pages
    • Search on double-bracket
    • Fix bug where changing link text changes the title of the linked page (#5)
  • Showing linked references
    • Different references view for view pane (#16)
  • Sidebar on shift-click
    • Add 'X' removal button on view pane blocks
  • Edit title
    • Update all linked refs with new title
  • Showing unlinked references
    • Fix bug where showing unlinked references on one page shows them on all (#6)
  • Search
    • Create if none
    • Clear search input on page click
    • Search within block text as well, position these result under page title results
  • Shortcuts/favoriting a page
    • If a block is pulled up, the page gets favorited
  • Indenting and unindenting
    • Fix bug where focus is lost after doing so
    • Allow deleting of empty, non-title block when typing backspace (#7)
      • Only if it's not the only block left
      • If not empty, merge into closest visually-adjacent block above
  • New sibling block on
  • Actions
    • Zoom in
      • Breadcrumbs
    • Show or hide thread
  • Thread lines
    • Click to collapse
  • Styling (#8)
    • Indicator of collapsed block
    • Link colors
    • Linked references
  • Local save and load
    • Ask if user wants to stay on page when closing tab
  • Optimize cursor click โ†’ caret pos translation (#9)
    • When arrowing up/down and edge of block is reached, go to visually-adjacent block
  • Graph view (#10)
  • All pages view (#11)
  • Daily notes (#12)
  • Resizable panes (#13)
  • Sidebar toggling (#14)
  • Markdown import/export (#15)

Styling

Improve the styling/spacing/positioning of:

  • Indicator of collapsed block
  • Link colors
  • Linked references

Caret Positioning

The caret should move to the right spot when using the mouse/arrow keys. This includes:

  • On click, put caret under cursor
    • Account for any markdown/wikilink text that the rendered mode doesn't show

Daily Notes View

Create a view which automatically creates page blocks for each day

  • Pages are stacked on top of each other
  • Pages are lazy-loaded on scroll
  • Pages are created regardless if the user wrote anything
    • Probably check on app start if today's note has been created. If not, create it.
      • Could create bloat if user never uses it, maybe make it a setting to check?

All Pages Table Search

The all pages view could use a global search in order to make it easier to find multiple pages for a bulk operation

Check for Existing Page Title & Offer to Merge

If the page title that's typed in already exists, prevent the save action, revert the title (this should only be possible when editing an existing page's title), and offer to merge the two pages.

Merging MVP would just be to move the current page's first child blocks to the end of the target page's child blocks.

'Click here to edit' Should be Placeholder

Currently, blocks start off as 'Click here to edit'. This should be a placeholder rather than actual text. The text should disappear on click instead of the user having to delete it.

All Pages View

Show all page blocks in a table view.

  • Allow sorting by name, created/updated dates, number of references (links.to)
  • Pagination?

Graph View

Use d3-force perhaps?

A view which shows a graph using the linksSlice adjacency list data.

All Pages Daily Note Filter

It would be nice to be able to toggle a filter for the all pages view that filters pages that are daily notes.

Markdown Import/Export

Probably a stretch, but it would be cool to be able to import and export markdown of one/many/all pages/blocks. Exporting would be easier than importing. Importing would require filtering out anything that isn't supported (e.g. tables).

Collapsible Panes

Allow users to fully collapse panes out of view. Provide icons in the corners to bring them back in.

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.