Native iOS app for Habitica

Overview

Habitica for iOS Build Status

Native iOS app for Habitica.

Contributing

For an introduction to the technologies used and how the software is organized, refer to Contributing to Habitica - "Coders (Web & Mobile)" section.

Thank you very much to all contributors.

How mobile releases work

All major mobile releases are organized by Milestones labeled with the release number. The 'Help Wanted' is added to any issue we feel would be okay for a contributor to work on, so look for that tag first! We do our best to answer any questions contributors may have regarding issues marked with that tag. If an issue does not have the 'Help Wanted' tag, that means staff will handle it when we have the availability.

The mobile team consists of one developer and one designer for both Android and iOS. Because of this, we switch back and forth for releases. While we work on one platform, the other will be put on hold. This may result in a wait time for PRs to be reviewed or questions to be answered. Any PRs submitted while we're working on a different platform will be assigned to the next Milestone and we will review it when we come back!

Given that our team is stretched pretty thin, it can be difficult for us to take an active role in helping to troubleshoot how to fix issues, but we always do our best to help as much as possible :) With this in mind, when selecting issues to work on it may be best to pick up issues you already have a good idea how to handle and test. Thank you for putting in your time to help make Habitica the best it can be!

Steps for contributing to this repository:

  1. Fork it
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Create new Pull Request
  • Don't forget to include your Habitica User ID, so that we can count your contributrion towards your contributor tier

Setup for local development

Config File

Copy over the sample debug config file.

$ cp sample.debug.xcconfig debug.xcconfig

If you want to run your app against a locally running version of Habitica, change CUSTOM_DOMAIN to localhost:3000 or whatever port you have your local version configured to. Also set DISABLE_SSL to true so that the url can be configured correctly.

CocoaPods

We are using CocoaPods to manage dependencies.

If you have managed ruby environment (rbenv, rvm, etc.):

$ bundle install
$ bundle exec pod install

As an alternative, it is possible to install the dependendencies manually. Use sudo if required to install gems (i.e. you are using the MacOS system ruby):

$ sudo gem install cocoapods:'>=1.2'
$ sudo gem install cocoapods-keys
$ pod install

During installation, cocoapods-keys will prompt for some of the keys used in the project. Use any random value for debugging, the real values are only required when uploading a final build to the app store.

CocoaPods requires that you open the Habitica.xcworkspace.

$ open Habitica.xcworkspace
Comments
  • Siri integration

    Siri integration

    Since iOS 10 (currently in beta) has a Siri integration API, it'd be interesting to have Siri integration for things like "mark running as done".

    Regrettably, iOS development is only possible for OS X users, so I can't jump in on this (since it sounds it might have been fun!).

    Type: Feature Help wanted Priority: minor Status: issue: in progress 
    opened by WhyNotHugo 22
  • Tasks: Deleting a task sometimes doesn't update UI, can lead to unintended task deletion

    Tasks: Deleting a task sometimes doesn't update UI, can lead to unintended task deletion

    Sometimes when you try to delete a task, the task won't be removed from the list even after a pull to refresh. If you try to delete the task again, the same thing will happen, but on the back-end the app processes this as deleting the next task in line. This can lead to accidentally deleting many tasks before you know it.

    Closing the app and reopening will show the task list without the deleted tasks.

    Type: Bug Help wanted Priority: medium 
    opened by saraolson 17
  • Created an iPad version of the app

    Created an iPad version of the app

    I have created an iPad version of the app by copying everything from the iPhone storyboard to the iPad storyboard. This makes the app look a whole lot better on the iPad than it does when using the iPhone version.

    Shadallark

    opened by Shadallark 17
  • App becomes unresponsive on adding a new To-Do

    App becomes unresponsive on adding a new To-Do

    User report: "App crashes (becomes unresponsive) when I try to add a new todo task, as soon as I press the + button everything halts."

    I checked with the user and it only occurs with To-Dos. Only one report so far.

    The following lines help us find and squash the Bug you encountered. Please do not delete/change them. iOS Version: 14.0.1 Device: iPhone 7 Plus App Version: 3.0.3 (520) User ID: ae5e5969-3d75-4c06-9078-7d82bf6bb488 Level: 11 Class: mage Is in Inn: false Uses Costume: false Custom Day Start: 0

    Type: Crash Status: issue: needs investigation 
    opened by shanaqui 14
  • iPad Version

    iPad Version

    The 1.0.1 (65) version of the Habitica-iOS app is being built for the iPhone only. Therefore it shows up big and clunky on the iPad (or only uses part of the screen when not zoomed).

    I have copied the content from the iPhone storyboard to the iPad storyboard and adjusted the build settings to build for both devices. This makes the app look much better on the iPad than it has previously.

    I would be willing to undertake the task of ensuring that any changes made to the iPhone storyboard are copied over to the iPad storyboard to ensure the two versions remain synchronized going forward, if people agree that it makes sense to create the iPad ready version at this time.

    Shadallark

    Type: Enhancement Type: Feature 
    opened by Shadallark 12
  • Cron doesn't always automatically reset dailies, need to manually pull to refresh

    Cron doesn't always automatically reset dailies, need to manually pull to refresh

    "Once cron occurs, the only way to get dailies to reset is to manually refresh (drag them down to get the spinning wheel)" It's happened for awhile in the past, more than once

    Type: Bug Priority: medium 
    opened by saraolson 11
  • iOS Tutorial Improvements

    iOS Tutorial Improvements

    I think the tutorial is decent in terms of layout, but it needs shorter text, which I am happy to write! I need to go through the tutorial again for the text, and then I will edit this ticket.

    Type: Enhancement 
    opened by lemoness 11
  • Group tasks with ‘need approval’ kill my party

    Group tasks with ‘need approval’ kill my party

    I have set up a group, it seems like when I create a group task and set to ‘need approval’, and one of the members tries to click on it (both iOS) they immediately lose all their health and get the death screen. Also appear to be level 0. Then if they navigate around they get a message about leveling to their previous level and health reset. I have tried to reproduce the issue on my account but as the group manager I think it does not affect me.

    It seems to happen on all three boards, habits, dailies, to do's. Tasks they made for themselves work fine.

    Please let me know if more info is needed.

    Type: Bug Priority: medium 
    opened by sarahjean 10
  • TUTORIAL [1.1 (80)] Avatar Customization Comments

    TUTORIAL [1.1 (80)] Avatar Customization Comments

    Right now, the Avatar Customization is better, but it's still not fully clear that you need to scroll down. Some possible solutions:

    1. Include a gradient so that the bottom of the screen is fading, indicating that you should scroll.
    2. Have some sort of arrow or visual indicator to scroll.
    3. Make each section into tabs.

    Also, we need to either include the flower in the selection, or remove it from the starting character.

    Type: Enhancement 
    opened by lemoness 10
  • Simplifying TopHeaderNavigationController

    Simplifying TopHeaderNavigationController

    Used Pop to animate the BackgroundView's layer - helped clean up the logic a lot. Let me know how well this works on a device - I don't have the provisioning to run it on mine. Hopefully Pop works as smoothly as your native animations were working before and if not, feel free to close this!

    opened by kyle-fox 10
  • Typo when receiving

    Typo when receiving "Skeleton hatching potion"

    When receiving the skeleton hatching potion on the iOS version, the notification displays no space between "hatching" and "potion".

    Type: Bug Good first issue 
    opened by scrypt-kitty 9
  • challenge description links don't work as intended

    challenge description links don't work as intended

    The following lines help us find and squash the Bug you encountered. Please do not delete/change them. iOS Version: 16.1.2 Device: iPhone 11 App Version: 3.6.4 (797) User ID: 35c3fb6f-fb98-4bc3-b57a-ac01137d0847 Level: 774 Class: mage Is in Inn: true Uses Costume: true Custom Day Start: 4

    Please describe the bug you encountered: Links in challenge descriptions don’t work on iPhone.

    Type: Bug 
    opened by rilygreat 0
  • notifications for task reminders, DMs, and daily reminders not working

    notifications for task reminders, DMs, and daily reminders not working

    user reported:

    Hello. I receive no notifications for some reason. I got both habitica and iOS notifications settings enabled and the last app and iOS versions. 

    all toggles are turned on both in the habitica app and on their iOS device.

    Type: Bug Status: issue: needs investigation Help wanted 
    opened by rilygreat 0
  • opening link from a challenge's to-do causes crash

    opening link from a challenge's to-do causes crash

    The following lines help us find and squash the Bug you encountered. Please do not delete/change them. iOS Version: 15.7 Device: iPhone14,4 App Version: 3.6.2 (752) User ID: 97c8e106-12d0-4165-85f5-16897564f592 Level: 4 Class: warrior Is in Inn: false Uses Costume: true Custom Day Start: 0

    I joined a challenge (Lovecraftian Cleanup… I couldn’t resist), and one of the To Do’s has a link to join a party. I clicked it, and CRASH.

    Type: Crash Help wanted Priority: medium 
    opened by rilygreat 2
  • daily set to repeat monthly resetting to

    daily set to repeat monthly resetting to "due" every day

    The following lines help us find and squash the Bug you encountered. Please do not delete/change them. iOS Version: 16.1 Device: iPhone X App Version: 3.6.2 (752) User ID: f8584383-dcea-418e-8ca9-3a94378d8769 Level: 63 Class: mage Is in Inn: false Uses Costume: false Custom Day Start: 0

    Please describe the bug you encountered:

    I have a “daily” set to repeat monthly on a “day of the week” that is lighting up as a to do every day now. I keep checking it off and it shows up the next day.

    image1 image2

    Type: Bug Help wanted Priority: medium 
    opened by rilygreat 0
  • Large dailies widget doesn't list challenge or group dailies

    Large dailies widget doesn't list challenge or group dailies

    the full count includes challenge/group dailies, but the list of dailies only shows personal. ie i had 7/15 dailies due, 4 personal, 2 challenge, and 1 group. 7 was shown, but only 4 were listed in text.

    Type: Bug Priority: minor 
    opened by saraolson 0
Releases(1.11.1)
Owner
HabitRPG
HabitRPG
Impelemented native Crisp chat sdk on android and ios

crisp_chat_sdk Impelemented native Crisp chat sdk on android and ios Preview Simulator.Screen.Recording.-.iPhone.13.mini.-.2022-02-07.at.18.24.56.mp4

mohammad mohammadi 2 Jul 17, 2022
Unrealm is an extension on RealmCocoa, which enables Swift native types to be saved in Realm.

Unrealm enables you to easily store Swift native Classes, Structs and Enums into Realm . Stop inheriting from Object! Go for Protocol-Oriented program

Artur  Mkrtchyan 518 Dec 13, 2022
🔥 🔥 🔥Support for ORM operation,Customize the PQL syntax for quick queries,Support dynamic query,Secure thread protection mechanism,Support native operation,Support for XML configuration operations,Support compression, backup, porting MySQL, SQL Server operation,Support transaction operations.

?? ?? ??Support for ORM operation,Customize the PQL syntax for quick queries,Support dynamic query,Secure thread protection mechanism,Support native operation,Support for XML configuration operations,Support compression, backup, porting MySQL, SQL Server operation,Support transaction operations.

null 60 Dec 12, 2022
SPM-native private framework bindings

Paris SPM-powered SDK for working with private frameworks. Help me! Currently, using Paris is a bit convoluted. Due to a limitation set by SPM, Paris

Eric Rabil 3 Sep 6, 2022
A Library for iOS developers to check newer version of app from the app store

swift-app-update-checker A very simple solution check new version of your application is available on store or not. Example To run the example project

wajeehulhassan 6 May 13, 2022
macOS App for App Store Connect to Improve Processing Efficiency and Enjoy the Party.

Apple Party(苹果派) 一、App 介绍 AppleParty 是三七互娱旗下37手游 iOS 团队研发,实现快速操作 App Store Connect 后台的自动化 macOS 工具。 使用和原理介绍:开源一款苹果 macOS 工具 - AppleParty(苹果派) 支持功能 内购买

37iOSTeam 173 Dec 30, 2022
Ios-App-ication-Swift - A simple iOS application made in Xcode using Swift

?? iPhone Calculator A simple iOS application made in Xcode using Swift. This ap

Kushal Shingote 1 Feb 2, 2022
A demo app to showcase pixel perfect, modern iOS development with SwiftUI and Combine on MVVM-C architecture.

Pixel_Perfect_SwiftUI A demo app to showcase pixel perfect, modern iOS development with SwiftUI and Combine on MVVM-C architecture. Tech Stack: Swift,

Burhan Aras 0 Jan 9, 2022
An iOS app to lift the speed limit of your Cowboy Bike

Legal Notice 1. I am not resposible to anything worse that could happen to your bike because of this app 2. Be careful that lifting the 25km/h limit c

null 74 Dec 15, 2022
This is the public repository of the MADBike app for iOS. Public bike rental service for BiciMAD.

MADBike Requirements iOS 10.3+ Xcode 10.3+ Swift 4+ Installation Copy BiciMAD/Supporting Files/GoogleService-Info-Sample.plist to BiciMAD/Supporting F

Alex Rupérez 24 Mar 25, 2022
xFonts is an app that lets you install custom fonts on iOS and iPadOS.

xFonts xFonts is an app that lets you install custom fonts on iOS and iPadOS. Grab fonts from your iCloud Drive or Dropbox and add them to your collec

manolo 137 Dec 10, 2022
The hassle-free way to add Segment analytics to your Swift app (iOS/tvOS/watchOS/macOS/Linux).

Analytics-Swift The hassle-free way to add Segment analytics to your Swift app (iOS/tvOS/watchOS/macOS/Linux/iPadOS). Analytics helps you measure your

Segment 53 Dec 16, 2022
Which contacts changed outside your iOS app? Better CNContactStoreDidChange notification: get real changes, without the noise.

ContactsChangeNotifier Which contacts changed outside your iOS app? Better CNContactStoreDidChange notification: Get real changes, without the noise.

Yonat Sharon 5 Oct 31, 2022
A GUI for dynamically creating NSPredicates at runtime to query data in your iOS app.

PredicateEditor PredicateEditor is a visual editor for creating and using NSPredicates for querying data in your app. PredicateEditor was inspired by

Arvindh Sukumar 362 Jul 1, 2022
Server-driven SwiftUI - Maintain iOS apps without making app releases.

ServerDrivenSwiftUI Maintain ios apps without making app releases. Deploy changes to the server and users will receive changes within minutes. This pa

null 9 Dec 29, 2022
Prephirences is a Swift library that provides useful protocols and convenience methods to manage application preferences, configurations and app-state. UserDefaults

Prephirences - Preϕrences Prephirences is a Swift library that provides useful protocols and convenience methods to manage application preferences, co

Eric Marchand 557 Nov 22, 2022
Swift library that makes easier to serialize the user's preferences (app's settings) with system User Defaults or Property List file on disk.

PersistentStorageSerializable PersistentStorageSerializable is a protocol for automatic serialization and deserialization of Swift class, struct or NS

Ivan Rublev 163 Jun 3, 2021
macOS WeChat.app header files version history (automatic updated)

macos-wechat-app-tracker macOS WeChat.app header files version history (automatic updated) Troubleshooting $ class-dump -H /Applications/WeChat.app 20

Wechaty 3 Feb 10, 2022