GithubHelp home page GithubHelp logo

burtonator / polar-bookshelf Goto Github PK

View Code? Open in Web Editor NEW
4.5K 75.0 289.0 83.95 MB

Polar is a personal knowledge repository for PDF and web content supporting incremental reading and document annotation.

Home Page: https://getpolarized.io/

License: GNU General Public License v3.0

HTML 4.83% JavaScript 0.95% CSS 0.70% Shell 0.30% TypeScript 93.21% SCSS 0.01%
pdf electron ebooks ebook-reader chrome annotation react anki flashcards notes

polar-bookshelf's Introduction

Polar Bookshelf



Polar is personal knowledge repository which supports advanced features like incremental reading, annotation, comments, and spaced repetition. It supports reading PDF, EPUB, and the web content.

Features

  • PDF support We have first-class PDF support thanks to PDF.js. PDFs work well when reading content in book format or when reading scientific research which is often stored as PDF.

  • EPUB support Add any EPUB and we also capture web content to EPUB/

  • Captured Web Pages Download HTML content and save them as offline documents which can be annotated.

  • Pagemarks Easily keep track of what you're reading and the progress of each document.

  • Text Highlights Highlight text in PDF and web pages.

  • Area Highlights Capture a region of the page as a highlight which can be a chart, figure, infographic, etc.

  • Portable Run across any platform. Linux, MacOS, and Windows supported.

Downloads

Packages for Windows, MacOS, and Linux are available on the downloads page.

We also have a CHANGELOG available if you're interested into what went into each release.

Discussion

We have both a Discord group and Reddit group if you want to discuss Polar.

If it's a very technical issue it might be best to create a Github Issue.

Contributors

This project exists thanks to all the people who contribute.

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

License

Polar is distributed under the GPLv3.

PDF.js is available under the Apache License. Electron is released under the MIT License. Rest of the code is MIT-licensed.

polar-bookshelf's People

Contributors

a-sansanwal avatar adamwolf avatar andreipashkin avatar burtonator avatar demir-delic avatar ewnd9 avatar github-actions[bot] avatar glombadev avatar hybridceca avatar jgraeupner88 avatar joshirio avatar k1ckk avatar kant avatar khonkhortisan avatar monkeywithacupcake avatar niteria avatar ov3rcontrol avatar wintercore avatar xmbhasin avatar xuebingli 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

polar-bookshelf's Issues

Setup tslint

We need to setup tslint with a decent profile to keep our typescript tidy.

I'm sure it will spot some issues with my existing code as I'm running pretty fast.

Validate all Polar functionality on Windows.

I'm still not sure about all of the Windows functionality. I think all the key bindings should work and that MacOS and Linux work fine but we need to install it on Windows and make sure everything works there.

No meta charsets in capture

// FIXME: don't allow meta charset and other ways to set the charset within the
// HTML file as we are ALWAYS UTF-8 since we're sending it to the caller
// in JSON.  For example, if the encoding is ISO-8859-4 from teh original
// source , and sent to use that way, we would store it that way but
// re-represent it as UTF-8 which is then invalid.

Contribution instructions / help tasks

We're having people suggest how to help out but not all of them are coders.

We should create a page to allow people to help out:

  • make a donation
  • participate in the forum
  • test windows builds
  • provide build feedback
  • write documentation
  • help with marketing (where should we post, post a review)
  • post your feedback and suggestions for polar

Where is the documentation?

Where is the documentation on how to set this up with an Electron project? I am trying to load a blob into this viewer and can't find any documentation on how to even setup Polar Bookshelf.

EDIT: My blob resides in Electron's main process, so I am expecting something along the lines of creating a new BrowserWindow, but whatever Polar Bookshelf is when you import it and then PolarBookshelf.loadurl(blob)?

Feature: Basic text and area highlight colors.

It would be nice to support different colors for highlights.

We should support just three for now I think. red, yellow and blue.

One thing I'm worried about though is having them conflict with pagemark colors and if we implement new features I haven't though of before we might not be able to tell the difference between annotation types in some documents.

Remove 'legacy' highlighter system when used in pdf.js

We want to migrate to the new version completely but the old version works on pdf.js where the new version doesn't. Just fix the new version to support row joining like the old version.

The other major problem is that the positioning doesn't work properly for some reason.

Allow for customizable keyboard shortcuts

I believe Unity by default maps Ctrl + Alt + T to open a Terminal window. Would be nice to be able to change the shortcut within Polar Bookshelf instead of having to change it within Ubuntu's system settings.

Implement PROPER spectron tests of various browser infrastructure components.

We currently don't actually test electron components because Spectron is a REAL pain to work with.

I think the workaround is going to be to set a window.test_results value and just read that from mocha.

this way there's a standard way for any Electron code to update the test results and we can test more functionality of the electron core.

Feature: Text selection on Electron in pdf.js is horrible.

The text selection is excellent in Firefox but is broken in pdf.js.

I created a bug for it and posted it to pdf.js but I don't think they're going to be proactive about fixing the problem.

We might be able to build our own text selection system which just prevents updating the selection outside of the main textArea.

Polar processes not terminating properly when the main window closed

Machine:
XPS 13, i7-8550U @1.8GHz
16GB Memory
512GB NVMe SSD
OS:
Ubuntu 18.04.01 running kernel 4.17.14

Issue:
When closing application after opening a file, the polar processes are not terminated properly. Application cannot be opened again until the processes are killed manually. (See attached screenshots)
If the application is closed without opening any files, then all polar processes terminate properly.

Steps to Reproduce:
Open Application: spawns 4 polar processes (Screenshot_1)
Open any pdf or phz document; spawns additional polar process (Screenshot_2)
Close application (close box or File/Exit): additional book process is terminated, however, the original 4 polar processes are not terminated preventing the application from being reopened until these processes are manually killed. (Screenshot_3)

There are no log files created and no OS exceptions thrown

Screenshot_1-3.zip

Feature: Informational pagemark type.

  • there needs to be a 3rd pagemark type, IE informational.. bascially table of
    content and appendix pages. They should not have a full pagemark over them.
    and/or the pagemark should just be inactive. If the pagemark obsctures / blocks
    the UI then the table of contents won't be usable but at the same time I don't
    want the ToC to count against our progress percentage.

Disjoint highlighting in HTML

Right now we don't support the unified highlights like we do in PDF.js

Need to clean this up so that the text on the same lines are all the same as well as the breaks between them removed.

image

We must use the protocol object for each session to inject cached content.

Right now we tried to use 'partition' to automatically make a session and bind it to a window but then our requests no longer use request interceptors because a new session is made.

If we create a session manually then we can then get the protocol object and add our own interceptor.

If we use what we currently are doing though it works for default sessions but not new/custom sessions.

https://github.com/electron/electron/blob/master/docs/api/session.md

Audit TODO and FIXME issues with code.

Since this started off as a proof of concept I took notes in places where things are less than idea.

These are denoted by TODO and FIXME.

We should resolve these and/or move them to Github issues.

Some of them are probably very complex. Some are probably easier and could be resolved quickly.

Fix final issues with resizing pagemarks.

There are still some final issues with pagemarks and resizing them. I think it's an issue of vertical or horizontal intersection. We need more tests for these broken edge cases.

More Typescript conversion.

We still have to step through some of our Javascript code and convert it to TS...

This is a good area for new developers to take a look at pieces of the code and convert them slowly.

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.