Giter Site home page Giter Site logo

remark's Introduction

Remark

Remark is a fun social reader app built for iOS and macOS in swift. It is currently in progress and is not in a buildable or shippable state. The goal is to be in beta Summer 2019 and release sometime in Fall 2019.

For more information, please see this blog post

remark's People

Contributors

edwardhinkle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

remark's Issues

Make posts with weird new lines normalized

Some posts have weird new lines and white space because of the output HTML and not intentionally.

In an Article, likely all new lines need to be treated fine. For regular note posts or specialized posting types like Checkins, there should be some normalization of the content before display, remove extra white space at the beginning of a line and removing extra new lines beyond the standard new lines between two paragraphs.

0a8767a3-642a-46a6-9e22-589aefd4327c

Add follow action in Share Sheet

Add the ability to follow from Share sheet

Someone should be on a page and be able to choose “Follow” from that page.

  • Click “share” while on a page you want to follow
  • Click “Follow” action in sheet
  • Query XRay for available Feeds
  • Display available feeds, User chooses the feed
  • Use Microsub’s Preview function to preview the feed and confirm adding
  • Select what channel to add the subscription to

Display HTML content rather than just text content

Currently the timeline view only displays text content from a post, not html content. This is because a label is used to display the text. (this could also potentially help fix parts of #89)

There are a couple directions we could go with this.

My first attempt was to try embedding WKWebView in each post view, and pass the Content HTML in as an HTML string, however that seems to take awhile to load and it's ugly and has issues with it being a scroll view, etc. There may be some better approaches while still using that but I think I've decided to sideline that for awhile.

Another approach is to implement #89 to get images out of the html content, and then convert the HTML content into Attributed Text.
Some links to think through:
https://stackoverflow.com/questions/28124119/convert-html-to-plain-text-in-swift
https://medium.com/theappspace/swift-how-to-convert-html-using-nsattributedstring-8c6ffeb7046f

Besides those, I'm thinking the other option is to only show text content on the timeline view and show HTML on the Full Article view when you swipe right to left.

READER: Image Gallery View

The Reader interface should use a collection view instead of a table view. By doing that, we can switch from row view to flow view. The post can than primarily become a photo gallery. When the item is clicked on, it can grow to fill the whole screen

Add different colour theme options

It would be great to have the option to switch to a few different colour themes - I could see purple, green, and blue being quite popular. Currently the orange is a little light for me.

Fun bonus: switch the icon to match the theme.

(Adding this as an issue but I'd quite like to try to do this myself!)

Author profile pages based on h-cards, etc

It would be nice to create a kind of "Profile" pages where you can see the author's name, url, photo and other info from their h-card by clicking on the avatar (similar to micro.blog or twitter)

Add a “Twitter” feed to a channel

Use a service like twitter-atom or granary behind the scenes to serve twitter user feeds into a Microsub channel

The goal here is to allow someone to select “Twitter user” and enter a username and to hide the complexity of composing the conversion feed url and then automatically previewing and subscribing to that feed in microsub

Think through if there is a way to create priority follows?

In Overcast, you can create Priority Podcasts that when new podcasts from a specific feed come in, they all come in at the top of the feed, before any non-priority ones are listed.

I don't know if this is even possible in Indigenous and/or Microsub. But it seems like an interesting concept. It's kind of like the idea of Facebook's algorithm, except it is controlled by the user. Which is what the IndieWeb is all about.

Configure reading speed

Have a set of various article lengths (maybe from their own channels) have the user read through the articles and click a button when they are finished. Track the amount of words and the amount of time it takes to read each article.

Probably do two short microposts, three medium length articles and two longer articles. Figure out how many words per minute they read and then use that when calculating how long a post will take to read.

Instead of loading all the posts since the last loaded post, we should load the latest batch of posts and show a button to load the rest

As described in this issue:

Over here (IndiePass/indiepass-ios#73 (comment)) it was mentioned the idea that a user that hasn't opened a Indigenous in a week might have 500 posts sitting in a channel and that it would be a lot of data to load.

This is actually a very realistic scenario, and one I would like to be able to tackle in Indigenous. My favorite current approach is Tweetbot's "Load Missing Tweets"
tumblr_inline_n9yt8wvi0t1qz4hbm

How this would work is I would have the last posts I fetched when they previously opened the app (with it I would have that batches "before" token). When the channel is opened a week later, I do the standard timeline fetch with no modifiers, getting the current front posts as well as a before and after token.

What I would like to be able to do is to provide the "before" token from the previous group of posts, and the "after" token from the latest group of posts, and get an integer that provides how many posts exist in-between those two tokens. This would enable me to then provide a "load missing posts" button by using either the before token to get older posts or the after token to get newer posts. Eventually, removing the "Load Missing Posts" button when there are no more posts left. (I'm thinking it would technically load 10-20 posts for every click and provide some metric letting them know how many more posts are missing.

Find a way to save and “follow” conversations.

There are a couple types of conversations you would want to follow:

  • an IndieWeb conversation (this would need to find a way to go both up and down the webmention tree by following in-reply-to and commented posts that can be parsed off of pages). You would probably save this based on the primary post’s url

  • a micro.blog conversation (using the micro.blog api)

  • a twitter conversation (using either XRay or granary). Essentially recreating a conversation view like Tweetbot, but allowing you to easily return to that conversation to see new posts)

Preset Micropub attributes per channel

You should be able to attach Micropub request attributes to a channel that will always be included by default on any action in that channel.

For example, any responses should have a given category, syndication target, or visibility attached to them.

Allow for the customization of swipe commands

A user should be able to choose what they want swipe commands on the timeline to do.

Currently the options I can think of for swipe commands are:

  • View Full
  • Reply
  • Share
  • Like
  • Bookmark
  • Mark as Read/Unread

Should this be customizable on a per channel basis???? That might be too fine grained. Right now, I’ll focus on customizable on a per account setting.

Add easy way to enter a link and text

Add a nice menu button for adding link and text, likely a simple view with a "text" and "hyperlink" section. When done is clicked, it adds it within a markdown link

Add temporary mute filters

Mute filters are a helpful feature to temporarily hide posts containing text content that might spoil a popular show/etc.

Eventually some form of “spoiler alert” might be helpful. But for now, just having a mute filter in a reader helps avoid content you might not want to see yet.

Add support for mp q=config destination

Add support for destination configuration. From a UI perspective, posting to multiple micropub endpoint versus posting to a single micropub endpoint with multiple destinations should be the same.

indieweb/micropub-extensions#3

The one part to think about is defaults. How should I default the destination? Should it be the first destination in the list or the last destination used? I currently allow someone to set a default Micropub Endpoint, but a default Destination is different. Maybe that’s the answer, maybe if they have more than one destination, I need to allow an option to choose a default destination on the micropub endpoint settings page.

(Originally posted at https://eddiehinkle.com/2018/02/20/12/reply/)

Possible Channel View styles

This ticket is a place to think and track ideas for different views of the channels

  • Timeline View (Current View)
  • Photo Timeline (Instagram style?) filter out only things that have photos
  • Photo Gallery (A collection of images looking like a photo gallery)
  • Map View Presents a map with dots where posts are, and presents cards at the bottom that show posts within the frame
  • Card View Kind of like Timeline View but more graphical and looks like the iOS 11 App Store styling
  • Article View (This would be like. Classic feed reader. Compact summary, where you click to view the full thing)

Prevent user from submitting empty content

If a user hasn't entered any content text, ask the user if they are sure they want to submit?

If there are no photos AND no content, they probably shouldn't even be able to submit. Maybe de-activate the submit button until one of those requirements are met.

Refresh endpoint list and request new scopes if applicable

I started logging into Indigenous before I had set up my microsub endpoint, so Indigenous loaded as a Micropub client and displayed the microsub info as per #198.

Once I had finished setting up my microsub endpoint, I did not see any way to make Indigenous find it and then ask for the read scope to function as a microsub client.

I tried logging out and logging back in, and Indigenous still only asked for the create scope.

I then uninstalled and reinstalled Indigenous, and it then recognized my microsub endpoint requested both scopes.

If I understand correctly, IndiePass/indiepass-ios@06d87a5 indicates that Indigenous should just work once the new endpoints are added, but this wasn't the case for me.

  • It would be nice if Indigenous had been able to automatically load my channel list once my endpoint was set up. I think this would require Indigenous to either (a) Ask for both read and create permissions from the start, or (b) request new permissions when a new endpoint is added.

  • The fact that I had to uninstall suggests there may be some caching (or similar behaviour) of endpoint lists that persists when the user logs out.

Not a critical issue, but might be a barrier for some users.

Add initial push notification support

Create a serverless app on Amazon AWS that talks to Indigenous apps. When a user turns on notifications, that sends a ping from the app to the aws server and registers for Push Notifications and has the server start periodically fetching that channel from the Microsub server. When new posts appear the server should send a PUSH notification to the iOS app.

Later, hopefully this can be upgraded using WebSub.

App crashes when loading empty (invalid?) timeline

I had a few channels that i had not yet populated with subscriptions. When I tapped on those channels to display their timeline, Indigenous crashes.

In my case, my microsub server is configured to return a string "empty results" when there is no timeline content. This was set up when debugging and should be changed - obviously not compatible with the microsub spec!

However, I think in this case that Indigenous should display an error instead of crashing altogether.

Drag and Drop Individual Entries

drop one or multiple articles into a floating "action bar" that only appears once you start dragging.

Dropping multiple articles into the bar reveals options to star, read later, or share them at once.

Inspiration for this comes from the apps: Bear (text), lire (rss reader)

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.