Code Monkey home page Code Monkey logo

xkcd-open-source's Introduction

Banner

Build Status GitHub license Coverage Status

A free, ad-free, open-source, native, and universal xkcd.com reader for iOS. Download it from the app store now!

portrait

Architecture

Version History

  • v2.5 (Submitted to the App Store)

    • iPhone X support
    • Added support for the four most common languages used by users other than English. German, Simplified Chinese, Spanish, and Russian.
    • Conducted full accessibility audit and implemented improvements.
    • Added 3d-touch previewing of comics from list.
    • New light-weight iOS app rating prompt replaced old alert-view style implementation.
    • Minor bug fixes and improvements
  • v2.4

    • Bookmarking comics - If you enjoy reading all the comics in order, you can bookmark a comic from the comic screen and we've provided an option from the main comic list to be taken back to where you left off at any time.
    • The "alt" view now includes the comic number as well as a "Explain" button that will take you to the explainXKCD site for that comic, in case you'd like a little more context.
    • View All Unread - quickly filter out all viewed comics, seeing only unread comics in the list.
    • Clear Cache - deletes all comics, resets all saved information including
    • View Bookmarked Comic - As previously mentioned, when you select this menu option you will be taken back to the comic you bookmarked and can continue browsing in-order.
    • View All Comics - this option will return to the unfiltered list if any of the above filters were applied.
  • v2.3

    • Fixes a comic view controller zooming issue caused by zooming in on a comic, viewing the alt text, then moving to the next/prev comic, resulting in the comic being zoomed out too far.
    • Added a Today Widget showing the most recent comic.
    • Removed GTrack and Google Analytics libraries.
  • v2.2

    • Fixes an issue with some of the known interactive comics, using a web view controller instead of the native comic view controller as a stop-gap until we work out some other solution.
    • Ask users to leave a review, only once ever, to get some more feedback.
    • Swipe navigation between comics.
    • Share sheet.
    • Moved alt button to bottom for easier use on larger devices.
    • Random comics can be viewed from the comic list, making it easier to randomly browse.
  • v2.1.1

    • iOS 9 networking bug fix (#29)
  • v2.1

    • Share comics to Facebook and Twitter
  • v2.0

    • Added the ability to favorite a comic, which is indicated on the comic list with a pretty red heart. Along with this, you're able to toggle a filter on the comic list to see only favorites
    • Roll-the-dice to view a random comic
    • Navigate forward and backward through comics directly from the comic view controller
    • Fixed a potential issue with comics not loading on the first launch
  • v1.2

    • Visual indication that comics are read vs. unread
    • Improved comic view layout so some comics won't be cut off by the alt button
    • Hopefully corrected issue related to disappearing push notifications
  • v1.1

    • Improved scrolling performance
    • Search beta
    • Silent push notifications w/ vibration & app badge
    • Bug fixes
  • v1.0

    • Initial Release - you can read comics and stuff...

Contributors

Want to help?

Download the app and use it - give us feedback! Leave a star on the repo, and a review on the app. If you find any bugs, have any feature requests, or want to say mean and nasty things to me, open an issue, and if you can patch the bug or add a feature and submit a pull request, even better - just make sure to follow the same code formatting/style and BE SURE TO ADD TESTS if applicable.

License / Attribution

The source is made available under the MIT license. See LICENSE.txt for details. For information regarding xkcd licensing, click here.

Social sharing icons from Zlatko Najdenovski via a Creative Commons Attribution 3.0 Unported License.

xkcd-open-source's People

Contributors

fergusean avatar mamaral avatar nguyendytrich avatar ryancopley 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

xkcd-open-source's Issues

Push Notification Badges

We need to add the badge info to the push payload, and clear the badge when the app enters the foreground/launches.

Bugs found in this app with the static analyzer Infer

Hi,

I attached here a list of bugs or warnings that I found while analyzing this app with Infer (www.fbinfer.com) a static analyzer. I ran the tool on this app to test it and to have a case study to show in a talk I'll be giving next week about it. Do you think it's OK find for me to show the issues found in may talk, and show snippets of code?

https://www.dropbox.com/sh/5eku0yl6n27xwl4/AAArA0OzzVjkxwsSKNJ1v7d-a?dl=0

There are also bugs in file in the Pods, but the ones below are in the actual sources of the app:

Bugs

  1. Source/Managers/Request Manager/RequestManager.m:74: warning: PARAMETER_NOT_NULL_CHECKED
    Parameter handler is not checked for null, there could be a null pointer dereference: pointer handler could be null and is dereferenced at line 74, column 9
    1. if (!token) {
    2. NSError *error = [self errorWithMessage:kRequestManagerNilTokenErrorMessage];
    3. *> * handler(error);
    4. return;
    5. }
  2. Source/View Controllers/Comic/ComicViewController.h:27: warning: STRONG_DELEGATE_WARNING
    Property or ivar delegate declared strong at line 27, column 1. In general delegates should be declared weak or assign
    1. @interface ComicViewController : UIViewController
    2. *> *@Property (nonatomic) id delegate;
    3. @Property (nonatomic, strong) Comic *comic;
  3. Source/View Controllers/Comic List/ComicListViewController.m:32: warning: REGISTERED_OBSERVER_BEING_DEALLOCATED
    Object self is registered in a notification center but not being removed before deallocation at line 32, column 1. Consider removing the object from the notification center before its deallocation.
    1. @EnD
    2. *> *@implementation ComicListViewController
  4. Source/Managers/Data Manager/DataManager.m:22: warning: REGISTERED_OBSERVER_BEING_DEALLOCATED
    Object self is registered in a notification center but not being removed before deallocation at line 22, column 1. Consider removing the object from the notification center before its deallocation.
    1. @EnD
    2. *> *@implementation DataManager

Thanks a lot,
Dulma

Switch to an SFSafariViewController where available

The current web view has several glitches, and the SFSafariViewController class is designed to eliminate app designers from the burden of creating an in-app browser:

If your app lets users view websites from anywhere on the Internet, use the SFSafariViewController class. If your app customizes, interacts with, or controls the display of web content, use the WKWebView class.1

However, it is only available in iOS 9+.

Swipe to move between comics

I always find myself attempting to swipe left and right when viewing comics on my phone, before remembering that the forward/back buttons are in the toolbar. A swipe-to-change-comics feature could be useful.

Add support for Retina (@2x) comics

Hi!

I reviewed the latest version of the app (2.5) asking to add support for @2x webcomics. Indeed, Randall has always provided an @2x version of the comic beginning with 1084 (see here). They're just the standard img URL with _2x appended before the extension. One could easily check that the comic is 1084 or later and also check the PNG actually exists (in case it's missing or it's a special comic).

Cheers!

URL scheme support

Would be awesome to support a URL scheme to allow apps like Opener to open individual comics in the app.

Build again for new iPads Pro (no homebutton)

The current version has black bars on the top and bottom (letterbox compatibility mode) and forces other apps into the same mode in split view. Could you rebuild the app (if need be without new features) to support the new devices?

[Feature Request] Filter by Read/Unread

Hey there,

Thanks for your work on such a terrific little project.

I would love to see the option to show only unread comics, this way you can make sure you literally have not missed a single XKDC comic created.

Thanks!

[Feature request] Random cached comic

It would be nice if there were a way to pick a random comic but only among the cached ones for when you don't have an internet connection.

I might be able to work on this myself; could I have a hint as to which files are responsible for networking and random comic picking so I don't have to search through everything?

[Feature Request] Mark all as read

I like the app and I've been reading xkcd for a lot of years. Being new to the app, but a long time reader, it would be great if I could do a mark all as read. It would sure beat pressing the random button 1,894 times.

Privacy

Locking an issue like that is absurd. The issues with privacy on Apple software is as well documented as with Microsoft software. That is not relevant to the issue that I created, which you ignored the important part of. The important part of the issue was the tracking code itself, not with the tracking account.

iPhone widget should open comic when tapped

The widget is not interactive at all. I was expecting it to open the comic in the app when I tap the widget. Especially since the widget does not display the entire image in Show More mode.

Current XKCD#: 2102
Device details:
iPhone XR
iOS 12.1.3

[Feature Request] 3D Support

There is a cool easter egg to view all comics in 3D. If you go to https://3d.xkcd.com you can see it. I don’t know how hard that would be to add to the app, but it would be a cool thing to possibly have as a hidden setting only shown after reading 880 (the one that introduced the 3D thing).

Tap comic to view title text

I always find myself searching for the little triple dot in the top right hand corner. What if tapping the comic brought up the title text as well? This would be especially handy on larger screen devices on which it is sometimes tricky to reach the top right hand corner of the device.

Code coverage

Let's try to get to at least 50% code coverage ASAP.

Remove tracking/Add option to disable tracking

I am concerned that this software is tracking users without their consent, and without the option for users to disable this tracking. After reviewing the source of this application, I see that almost every event is tracked.

App will no longer download new content

Within the last week or so, the app has stopped downloading new comics. I tried uninstalling and reinstalling the app, and now it won’t load any at all - it just gets itself into an infinite loop of displaying the “Oops! An error occurred while loading this content...” message. Please fix this - I loved this app!

Localization

Determine the most common languages users consume the app in and get translations for in-app strings.

Zoom on iPad

Great app but all comics are always fully zoomed. As a result, the smallest of them look poorly on iPad's.

[Feature Request] Search comics including text

In the other XKCD app I have, I can search a phrase or text from the comic content itself, not just the title and it will find it. That would be awesome for this app! I even have an idea for how to do it.

Comic 2131 does not show up

While I know that it did not work due to the interactive component, fixing the comic in question to show the result would be nice.

Handle Interactive Comics

Some comics aren't just images, they might be interactive pages or GIFs or some other stuff that we need to handle accordingly. First we need to investigate what these comics are and how to handle them. We should also use this area to keep track of any we come across.

Quickly view comic title text on iPad Pro by tapping comic number icons

The iPad Pro's screen is large enough that comics can be comfortably read from the main comic selection view (in fact, I often do this). It would be extra nice if I could tap the little comic number icons to bring up the title text for each comic (and also possibly mark that comic as read).

Accessibility

Do an accessibility audit and ensure we're doing everything we can do be accessible.

Won’t launch

Brand new install on iPhone X with iOS 11.4. A small comic thumbnail appears for a second, then goes away, then a dialog box shows up with: “Oops! Am error occurred while loading this content. Please check your connection and try again” I am on WiFi. Uninstalling and reinstalling haven’t helped

No notifications

Notifications have stopped working again (yes, they are enabled in settings).

iPad Pro (12.9-inch) (3rd generation) – iOS 12.3

App Transport Security policy error

There's been almost 500 events reported in Google Analytics with the following error:

The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

screenshot 2015-09-24 22 06 59

So... let's uh.... fix that...

[Feature Request] Bookmark Comic

Add ability to bookmark so you can quickly navigate to a specific comic - i.e. if you are reading them all in order and want to continue where you left off.

Imagining a bookmark icon on the comic screen itself, and a bookmark icon on the comic list next to the heart icon that when selected will scroll-to and open the last bookmarked comic... Only one bookmark would exist per app?

Scrolling performance sucks

This is most-likely due to the shadow/layer behind the comic number label in ComicCell. Lets not do that anymore for version 1.1.

Text encoding is wrong for alt text label

The encoding used for displaying the alt text does not match the encoding used by the server.
An example can be seen in comic 1814, where the notes on either end end the "é" are displayed incorrectly.
img_0045

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.