Giter VIP home page Giter VIP logo

slowreader's People

Contributors

ai avatar annagolmakova avatar baileys-li avatar chafilin avatar dependabot[bot] avatar easing avatar edward-leopold avatar greenteacake avatar guria avatar ilyatitovich avatar kamino0 avatar konfuze avatar kossnocorp avatar nick318 avatar pekac avatar privorotskii avatar pshergie avatar sanchopanda avatar sashachabin avatar tainkrios avatar toplenboren avatar upteran avatar usmanyunusov avatar uuladzislau 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

slowreader's Issues

Split JS bundle

Some pages are rarely used. We should speed-up app starting time by avoiding parsing JS of that pages.

We will use per-page splitting.

  • Add page loading page
  • Split pages to groups according to how often user will use them together
  • Split JS bundle

Add CoC

Don’t just copy-past and focus on simple but obvious cases, try to focus on solutions for real community questions.

Sort feeds for refresh

We should look for new posts first:

  1. In feeds which was not sync last time
  2. In Slow feeds
  3. In feeds which user likes more
  4. In feeds which posts more often

Add preview deploy

It will be nice to deploy PRs. At least Storybook, performance tests and web UI.

It will be nice to be able to deploy PRs from guests. This is why preview deploy should work without GitHub secrets.

Preview deploy should also use GitHub environment API to add a link for preview (not a comment).

Add Storybook tests for web UI

We should have tests for the whole pages with emulating store’s content

  • Add Storybook
  • Add tool to test light/dark version
  • Think about tool to test :hover
  • Add sugar to test pages by emulation stores
  • Publish Storybook to dist/

Add filters to feeds page

Feeds list could be very long. We should help user to solve these problems:

  • Do I have any dead (not working anymore) feeds?
  • Do I have any feeds which stopped to write?
  • What feeds creates more noise?
  • What feeds give me more things?
  • Find feed by name
  • Find feed by some other parameters like slow/fast type, etc
  • Share some feed with a friend
  • Find feed by category
  • Rename category

We also need to add Show feeds with errors link to refresh status page to open feeds page with errors filter.

Add feed `reading` detection based on posts

We should predict feed type (fast/slow) on:

  1. Loader type (RSS is more often slow, than social networks)
  2. Content type (too many small posts with images only or 1-2 sentences is more often fast content)
  3. Text content length

Add Read It Later feature

Every post should have Read it later button. After clicking the post will be moved to special “magic” feed in Slow.

Add Changelog to About page

We can have CHANGELOG.md in the project root with special marks for client’s type (add them to CONTRIBUTION.md) and client’s will have a function from core/ to filter records.

Improve `CONTRIBUTION.md`

We should avoid common template and create project-specific file thin ink about real help for users.

It should reflect new developer onboarding. What it should include:

  • We use English but don’t afraid to use DeepL
  • How to start each component (web server, mobile app)
  • Design practices
    • Link to Nano Stores docs
    • Link to Nano Stores I18n
    • Link to Logux
    • All logic in the core, web is just UI
    • All logic in stores, very dump components
  • What developer should think about
    • Conflict resolution (not ideas, just avoid broken stage)
    • Clear types
    • Tests
    • Dependencies criteria
      • JS bundle size (recommend tools, tell about .size-limit.json)
      • node_modules size (recommend tools)
      • Choose best not popular (for to search)
    • Log and storage migration
    • Can we move this code to the core? Will other clients will use it too?
    • I18n and RTL.
    • Keyboard UX: think about path, react on keydown.
    • If you change text a lot, you need to change translation ID.
  • Popular steps which can be complex
    • What files to change to add new page
  • Test strategy (unit tests for core, visual tests for UI, performance and integration tests)
  • Folder structure
  • Release cycle
  • Deploy
  • Where ask questions
  • How to find next task

Be ready for loader change

What if we added a subscription with rss loader, but then blog’s author changed format to atom.

Also, we need to think about redirects (to update URL in subscription data).

Try to add animation to `:focus` effect

Animation will make it easier to find next :focus node by peripheral vision.

I like how this animation work in GNOME app, for instance.

Grabacion.de.pantalla.desde.2023-08-08.22-25-23.webm

Handle No posts case

In Fast, we should suggest go to Slow (if there are posts there).

If Slow, we should suggest read books.

We can show Refresh button, but only if the last Refresh was >5 minutes ago.

Clean old fast posts

Users may now be able to read all fast posts.

In this case app will consume more and more disk storage.

We need to add:

  • Settings for the number of posts.
  • A regular task to remove old posts.

Add RTL visual tests

In our visual tests system we need tests with left-to-right (Arabic, Hebrew) articles in English (and Arabic, when we have it) UI.

To be sure that everything renders normal.

Cache settings

  • We need to show how many MBs was used for preloaded images in cache settings.
  • We should have a button to clear all cache

Add `Link` header support

In RSS and Atom (maybe even some universal helper) we need to be sure that link to feed wil be not in <link> tag, but in Link HTTP header

Add a way to hide subscriptions

We could add PIN code to access to reader. If user enters one PIN, we will show all subscriptions, on other PIN we will hide some subscription marked by user.

Use case is a police check for illegal feeds on the street.

Loaders smoke tests on real content

Blocked by #96

In loader-tests/ we need to create a config with URLs to test loaders on real data.

  • Add script file and integration script to project’s package.json. It will use a lot from #96, think about code re-using.
  • This script need to read loader-tests/feeds.yml
  • Add there dev.to, LiveJournal, Tumblr (some safe-for-work project, ideal the artist with their work), WordPress official blog, other blog engines blogs, some popular blogs you know (Github).
  • For each RSS try to find the right loader by calling loader.isMineText(). Show nice error if the loader was not found.
  • For found loader call loader.getMineLinksFromText(). Be sure that it returned some posts.
  • For URL remove path (https://example.com/news.rsshttps://example.com/) and call use methods from core/preview.ts to be sure that reader will find that RSS URL from the home. feeds.yml should have a marker to disable this test for feed.
  • Add to docs information about that test and that file.
  • Add CI workflow to run that script every day.

Add stream parser for XML and HTML

Now we are making in-memory tree for the whole page even if we need a small node.

Maybe we should think to use stream parsers to reduce memory consumption.

But, it could slow down the subscription process if different loaders will look for different things in page. Maybe we need more complex API for parser.

Add `and`, `or`, and brackets support to filters

Right now filters use simple RegExp and support only simple single filter like filter(param) and not filter(param).

We need to add the proper filter query parser to add support brackets and and/or. Maybe with formal grammar like in twitter-search-query-parser, but we should be careful with JS bundle size.

What we want to support:

  1. filter(param) and filter(param)
  2. filter(param (with escape\))
  3. filter(param) or not (filter(param) and filter(param))

Add filter’s suggestions based on feed

We need a function which will suggest filters based on feed’s posts (not user input).

For instance, if account has a lot of reposts, we can suggest move them to Fast.

Add `lang` to `Post`

We need to keep lang from loader source to render post’s font correctly (in Unicode some symbols renders differently depends on language).

Find `media` in Atom/RSS

During parsing posts from RSS/Atom feed we need to parse all images in the text and put to post.media (list of URLs).

We will use them (don’t need to implement, just to understand why we need it):

  1. To preload images for offline reading.
  2. To render all images in post compact mode in feed.

State export

We should add a feature to export/import the whole state of app:

  • All subscriptions (not only RSS like in #13)
  • Last synchronized date
  • All unread subscriptions
  • Settings
  • Subscription meta-info like filters

In UI we should be able to select what parts to export/import.

Maybe we should this UI with #13

It will be nice if we will be able to reproduce user's issue by importing their state to empty project.

We could also suggest exporting the whole log to have 1-1 state replication (and maybe add Import log to app start screen).

Add big data performance tests

We should add an integration tests with a lot of data (500+ subscriptions, 10K+ posts, 5K+ posts for current subscription).

Automatic way to check performance is better, but we should also have a way to test performance in sort of Storybook page (we can start from manual check this Storybook page).

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.