Giter Club home page Giter Club logo

high-fidelity's Introduction

This project is unmaintained and likely no longer works.


High Fidelity

High Fidelity is a Firefox OS Application for subscribing and listening to podcasts. It is built with ember-cli, using ember-data and localstorage for managing podcast data. Supporting other platforms/browsers, and implementing service workers are eventual design goals.

Developing Locally

If you'd like to contribute to this project, take a look at the open issues, or file new ones if you encounter a bug or have a feature request.

To get set up for local development, you will need the following things properly installed on your computer:

Installation

  • git clone <repository-url> this repository
  • change into the new directory
  • npm install
  • bower install

Running / Development

Code Generators

Make use of the many generators for code, try ember help generate for more details

Running Tests

  • ember test
  • ember test --server

Building

  • ember build (development)

Further Reading / Useful Links

License

This program is free software; it is distributed under an MIT License.

Copyright (c) 2012-2014 Mozilla (Contributors).

high-fidelity's People

Contributors

brittanydionigi avatar cvan avatar ember-tomster avatar jbruggem avatar maciejczyzewski avatar mnoorenberghe avatar musically-ut avatar sole avatar timdavies avatar tofumatt 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

high-fidelity's Issues

Make the search results and episode list work with the screen reader

The screen reader built into Firefox OS can be used by blind people to gain access to the screen via synthesized speech. An introduction to it can be found here.

The Podcasts app has two areas where the screen reader cannot activate items.

  1. The list of search results after performing a podcast search.
  2. The list of episodes after opening a podcast item from the main screen.

To reproduce this:

  1. Start the Podcasts app.
  2. Activate the screen reader via the quick toggle (Firefox OS 2.0 and later), as shown in the overview linked above.
  3. Touch a podcast and double-tap. It will open a list of episodes.
  4. Touch any episode and double-tap to activate.

Result: The podcast episode will not load, or anything else.

Expected: The episode should start downloading, playing, or whatever the app is supposed to do. I'm blind myself, so cannot tell what will actually happen.

Same in the search results:

  1. Perform a search.
  2. Touch, then double-tap any of the search results.

Expected: Should bring up the dialog that asks if I want to subscribe.

Actual: Nothing happens.

I found out the latter by toggling the screen reader off, then tapping blindly where the search result approximately was, then toggled the screen reader back on.

The reason for this problem is most likely that both instances don't use links to mark up the individual items. In the main screen, on the other hand, each podcast item is a link, so activation comes for free, along with any other proper semantics. The way the episode and search result items sound, they appear to be clickable spans or something similar.

As a solution, as can also be found in various places in Gaia itself, proper semantics should be used like links in list items within lists to actually make these workable with the screen reader automatically. This will also cause the screen reader to properly read these out as what they are: links. :)

@yzen also has more info if needed, he does a lot of accessibility work on Gaia.

Lower memory usage on save/restore of Blob data

Due to the way Gecko/B2G handles the blob data, memory usage spikes when we save/restore blob data. We should see about using a File API or something that can better handle memory; right now playback of a saved file shoots memory up by over 100MB.

Use Broccoli for build

Broccoli is looking like a much better build tool, so we should use that for v2 over grunt. Grunt is great for tasks, and broccoli is just one of said tasks.

FirefoxOS: control A2DB connexion

When I'm listening to a podcast using my car speakers (connected using A2DP to my phone), the music application interferes with HF: play events are triggered when:

  • the connexion is established
  • the car's sound volume is changed
    I then have to manually stop the music player on FxOS to continue listening to my podcast.

Additionally, it would be great if the play/pause button of the car could play/pause HF.

(Bluetooth API seem to require a certified app, unfortunately.)

Podcast download/subscribe for offline use

My personal use of podcast apps on other platforms is to listen offline, usually catching up on podcasts in environments where I am lacking internet. A first step to this would be the capability of downloading an episode (rather than just playing it straight from the UI) - a bonus feature would be an automatic sync of 'subscribed' podcasts (configurable, ie "x number of new episodes")

Move to using Ember CLI

Should be minimal work, but I'd like the app to use actual Ember CLI conventions over the existing setup.

Download (new) podcasts automatically

We should cache any new podcast automatically with a ServiceWorker.

At the very least once one starts playing we can add it to the cache by intercepting the request.

Too many packages.

I think that the application can be greatly simplified. I advise you to think about what is superfluous, what can be replaced and simplified.

Update readme

With new developing locally instructions/replace recroom info with ember-cli info etc.

Figure out how to handle versioned assets with service workers

For the near future...

Build steps fingerprint many of the assets we'll want to cache with service workers. With the constant filename changes, we'll want to find a way to signify to the SW cache that these fingerprinted assets are related - nothing in the spec supports 'tagging' or indicating a related resource. Though the thought was entertained for a bit a while back w3c/ServiceWorker#657

Show podcast on lock screen (on Firefox OS)

I believe the music app displays its content on the lock screen, so we should show our Podcast cover image and metadata on there too if we're actively playing something, especially now that we have #37 fixed.

Give the "Add Podcast" item on the My Podcasts tab a proper label for the screen reader

The screen reader built into Firefox OS is used to give blind people access to the operating system and its apps via synthesized speech. An introduction can be found here.

The Add Podcast button at the top of the my screen's My Podcasts tab is missing a screen reader label. To reproduce:

  1. Run Podcasts, and make sure you already have at least one item in the list.
  2. Turn on the screen reader via quick toggle, as shown in the overview linked above.
  3. Touch the item that would add a podcast.

Expected: Screen reader should say "Add Podcast" followed by "link".

Actual: Screen reader will only say "Link header", which indicates that it found there is a link, just not what it is supposed to do.

Possible solution: I suspect this is an icon font or something similar. Give the a element an aria-label attribute whose value is a localized string like "Add Podcast".

Time clock for playing podcast is buggy

In all sorts of ways. Can hardly find a way to accurately reproduce the issue but it gets stuck when switching between podcasts with an error trying to set the maxValue.
Some typical javascript garbage about NaNs. More details tk.

Allow users to search for a podcast

By at least name. We'll use the iTunes directory as it's the best one we can find -- and it's also quite definitive.

We can use something like https://gist.github.com/tofumatt/7259969ac83c3f741c79 to return RSS URLs from the iTunes Media Store search results.

Adding URL https://feeds.feedburner.com/HlavnZprvy makes Podcasts loading something endlessly

Just adding https://feeds.feedburner.com/HlavnZprvy to the 'Add RSS feed' box and pressing Add button leads to Podcasts endlessly showing the wait icon and these errors in the JavaScript console (tested with desktop Firefox):

15:45:38.563 "DEBUG: -------------------------------" ember.js:3285
15:45:38.563 "DEBUG: Ember      : 1.3.2" ember.js:3285
15:45:38.563 "DEBUG: Ember Data : 1.0.0-beta.8.2a68c63a" ember.js:3285
15:45:38.563 "DEBUG: Handlebars : 1.2.1" ember.js:3285
15:45:38.563 "DEBUG: jQuery     : 1.9.1" ember.js:3285
15:45:38.563 "DEBUG: -------------------------------" ember.js:3285
15:45:40.048 "Transitioned into 'podcasts'" ember.js:3285
15:45:44.869 "Transitioned into 'podcast.new'" ember.js:3285
15:46:00.715 "Find podcast with rssURL:" "https://feeds.feedburner.com/HlavnZprvy" combined-scripts.js:969
15:46:00.763 "Creating new podcast." combined-scripts.js:979
15:46:00.772 "Updating podcast:q4d8q" combined-scripts.js:869
15:46:01.387 "Bad response" Object { responseData: null, responseDetails: "Feed could not be loaded.", responseStatus: 400 } combined-scripts.js:101
getFromGoogle/</<.success() combined-scripts.js:101
jQuery.Callbacks/fire() jquery.js:1037
jQuery.Callbacks/self.fireWith() jquery.js:1148
done() jquery.js:8074
.send/script.onreadystatechange() jquery.js:8329

15:46:01.388 "Could not download podcast" "success" combined-scripts.js:954
HighFidelity.Podcast<.update/</<() combined-scripts.js:954

If the problem is that cross-origin limitations make this working impossible, I would expect some nice error message instead.

Download crashes app

I just installed the app from git and I was able to search and subscribe to the "Accidental Tech Podcast". Sadly it doesn't show the artwork and when I try to download the latest episode (66) it starts the download and then after about 45 seconds the app crashes fatally and I see my normal home app icons.

I'm on Wifi and the normal Firefox OS 1.1.0 on a Alcatel One Touch Fire.

I added another podcast called "Odpod" and I was able to download the whole latest episode (138) and the text for this episode is a bit lighter then for the others (which I didn't download). When I press on this episode the text "Nothing playing" changes to "#138: Ministerieavsnittet" but then after about 8 seconds the app crashes again.

Track app usage with (anonymous) analytics

I figure we'll use GA, but there might be better app-specific libraries out there we could use if anyone knows any.

But list of things we need to track are:

  • Play/pause (to see usage patterns, how often people resume/listen in small chunks versus leave it on in the background)
  • Check for new podcasts manually (we should make force refresh a feature and if a lot of users do it we need to update automatically more often)
  • number of podcasts subscribed to
  • episodes listened to completion (per time period + total)
  • users
  • app launches

And probably some errors too.

The analytics will need to be able to be recorded for later offline transmission. Huh, that could be a library and project to itself... scope creep!

The list of shows for particular podcast is not updated

When I update a particular podcast list of shows it for a second show them, but then it restores back the list as it was the first time I have downloaded the list. Unfortunately, that makes Podcast app almost useless.

wreong

When doing npm install I get among other messages also:

npm http 200 https://registry.npmjs.org/grunt-jscs-checker
npm WARN deprecated [email protected]: Package was renamed to 'grunt-jscs'

Changing name of project.

I think that the project has a bad name. There should be no dash in the title.

high-fidelity ---> highfidelity (but this project exist on Github)

Maybe it's good reason to change word high maybe to lofty, elevated, deep or intense? What do you think?

Put v2 on gh-pages

v2 now works as a hosted app, albeit with only-streaming support (for now), so we should put it on gh-pages as a demo.

Document build process in README

We need to talk about the build process, what works in the packaged version versus the hosted version, and how this uses Rec Room, all in the README.

Fix deprecations

Lots of deprecation warnings when upgraded to the latest ember/ember-cli. Will need to research these & fix.

screen shot 2015-08-05 at 11 57 15 pm

Add Translations

We have Spanish and Portuguese reviews in the Firefox Marketplace, so let's tick those boxes off first, but this will be the tracking bug for all translations. We'll use this list of countries Firefox OS is sold in as our target for translations for the time being.

  • French
  • Spanish
  • Portuguese
  • German
  • Polish
  • Greek
  • Italian
  • Hungarian
  • Serbian

Re-implement localization

Some bugginess with the translations and handlebars helper for localization in the ember-cli version I'm developing. More specific details to come.

Allow installation on Android

Currently the packaged app can't be downloaded from the Marketplace on Android, but I'm not sure why. I'll look into it, but filing here for posterity.

Fix CSP issues

Lots of broken images/media content because of CSP errors. Need to update the app configuration to resolve these & also see how they effect FxOS specifically.

The search overlay doesn't cover the whole section

search overlay

I fiddled with the CSS for a bit but couldn't easily make this work with CSS changes alone. I also think that overlaying the text box and search button isn't a good UX since it doesn't allow the user to refine their search before the search finishes.

Merge with ember-cli version?

Do we want to convert this to ember-cli? Haven't looked at how many commits back I did that, but ember-cli version is here: https://github.com/brittanystoroz/its-five-o-clock-somewhere. There might be some annoying manual updates depending on how much has gone on with this app since then, and it's probably in dire need of dependency updates.

Just something to think about before we try adding in service workers. Might be good for people to see a SW example in an app using a popular framework.

What data store adapter to use

Right now the ember-cli-conversion branch uses ember-localstorage-adapter because I couldn't get anything else to work, though it was likely an issue of dependency updates (not necessarily that the adapters didn't work). Might want to revisit the localforage adapter && || indexeddb adapter.

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.