Skip to content

Instantly share code, notes, and snippets.

@Paulo-Branco
Created February 6, 2015 15:20
Show Gist options
  • Save Paulo-Branco/e4d208a336ac57e97e0d to your computer and use it in GitHub Desktop.
Save Paulo-Branco/e4d208a336ac57e97e0d to your computer and use it in GitHub Desktop.
myIST Release Notes - Alpha 0.5.2
# myIST - Alpha 0.5.2
###The Tripe-S Edition: Speed, Security, Scalability.
_![myIST AppIcon](http://www.paulobranco.net/myIST/AppIcon76x76%402x.png) Version A0.5.2. Alpha Testing Team only.
> If debugging is the process of removing software bugs, then programming must be the process of putting them in.” ~ Edsger Dijkstra
## What's up with this build:
**myIST** goes on stronger than ever. We've been pushing commits as fast as humanly possible. Bugs have been flying out the window and XCode has been crashing twice as much as usual. Deep down, I honestly think that it somehow feels some of my pain. It's been getting grumpier every day.
### What's new / fixed?
___
#### General Bug Fixes:
- [iOS 7] Fixed a bug that prevented the app from starting because of the use of an iOS 8 API method.
- Fixed the notification bug when fired over the hotspot banner
- Fixed the auto-update period selector getting messed up when scrolled out of screen
- The dashboard button now moves with the bottom tab bar
- Dismissing the settings view now returns the user to the personal view, not the dashboard
- Food and News objects can now be referenced by an unique ID (less code to handle state restores and stuff like that).
- Food objects now update every time new info is downloaded. The previous behavior was to skip an object that already existed. This keeps the menus up to date with any changes on the server side.
- State restoration is now working as expected in the dashboard views. Manual methods were replaced by Apple APIs to ensure state restore on table views.
- Improved the separation line / top menu behavior (they’re now less likely to stray away from the selected content).
- Fixed an issue with the canteen view where cells with available food slots could be populated with food info from a different meal due to iOS’s cell reuse system.
- Minor bug fixes in the API parsing methods.
- Adjusted the Evaluations Parser to account for changes in the FenixEdu API's responses.
- Adjusted the news parser methods to handle the new API response structure
- On calendar items without an assigned room “N/A” is now shown as the event location
- Fixed an issue where Auto-Enroll could disenroll the student from the evaluation if there was a mismatch between the app’s enrollment state and the server.
- Fixes some auto-layout issues in the manual login view.
- Fixes the status bar overlapping the navigation bar in the settings view controller.
- Fixes some notifications not firing when the app was in background
- The shortcut to move to today's month and the month name label now work as expected.
- Fixed an issue with core data that could cause the app to crash on state restore.
- Dashboard now correctly shows how many hours are left for an evaluation instead of '0 days' if the time difference is less than a day
- Fixed a 3 year old Apple bug that was crashing our app when trying to parse evaluations’ location info.
- Switching dashboard menus with the top menu now animates the new view from the left / right depending on the current and target VC.
- Implement the badge system for news notifications
- Fixed a bug that would crash the app if location finder was accessed on a day with a calendar event that did not have any location info set.
- Fixed the broken sign up after FenixEdu changed the default sign up URLs
- If a quick-login attempt fails because of an invalid password the quick sign in info is now deleted to allow the user to store the correct data on the next login.
- Started to replace some of the app icons with PDF Vector files that scale up to any resolution needed.
- Adjusted the Personal buttons to fill all the empty space. iPhone 4 and 4S devices now have a custom view with 4 smaller in-line personal icons.
#### New features:
- The Canteen view will now show a message if there is no info available. This can be extended to the other tables as soon as a valid design decision is made.
- Pull to refresh is now beta in the food info and enrollments dashboard views. I seriously doubt that I’ll be of any use but, oh well.. it looks cool.
- Implemented sharing on pending payment items.
- Added support for custom HTML on news items. Links will now be active and take the user straight to safari. Email addresses will also be recognized and open a mail prompt to send a new message.
- Total rewrite of the calendar view. It now uses about 20MB less of memory. The calendar now scrolls horizontally.
- News view will now auto-reload when a new news items are downloaded.
- Changed some of the priority colors assigned to courses to remove ugly stuff… The final release will have handpicked choices from the one and only… D. ‘Ive’ Máher.
- New Location Database (beta).
- Evaluation assigned rooms are now showing up in the calendar view.
- Added a new day view to dashboard, calendar and course schedule views
- Added a message to the dashboard VC when there are no more classes for the current day.
- Signup is now restricted to accounts with the ‘student’ role. This blocks the signing up of accounts of former students (alumni) and teachers that are not currently enrolled in a degree.
- **Rewrote the whole login and signup sub-system** (Web backend an iOS frontend) - This is actually a pretty big deal. Our backend is now totally stored in Tecnico's servers. All databases and php scripts have been migrated to IST's servers. This allows us to offer encryption (HTTPS/SSL) on all iOS->Server comms. The login system is also more secure as we won't need to store the user password on the device anymore (a server issued / managed API key will authenticate the user after the first login)[Still being developed]. The PHP backend has also been secured against SQL injection attacks (not that anyone is trying, but... who knows...).
- Auto-enrollment exceptions are now in place. Turn them on in the settings menu.
- Users can now disenroll from evaluations in the dashboard. A warning will be shown on disenroll attempts. **[UNTESTED!]**
- The calendar views now have event indicators (dots) on every day that has a valid event
- Improved the pan support on news and personal filter views. The filter will now snap to the closest end-point (top or bottom) independently of the original position. The previous behaviour was to snap to the opposite point even if the user stopped the gesture near the original position.
- Added an option to delete the quick-sign in info from settings
- Did I mention all our app to server content transfer is now encrypted?
- And... SSL. I just love mentioning it.
- Added a login check to let the user know if the API authorization was revoked.
- Removed the top menu from the dashboard according to the latest design plans.
- Personal icons now strech up to fill the empty space (this is way more noticiable on 6 and 6 Plus devices)
- Added custom tab bar icons to the course's tab bar (Máher lost a few brain cells to make this possible, so... a round of applause for him)
### What's still broken?
___
- Launch images haven't yet been implemented
- Missing tap to go to the top of the table on all table views
- The location database still has a lot of junk. It needs to be refined.
- Food cells should probably be dynamically sized. The canteen doesn't seem to be serving 5 course meals anymore.
- Even though we can detect revoked FenixEdu API tokens at login there's still no support for this on the regular API calls (and it may crash the app). This FenixEdu API code is set to be refactored in one of the next releases and should fix this issue.
- In-App notifications haven't been disabled, yet. Let's give them another chance. If they crash the app we'll remove them until a valid alternative is found.
- We're not done yet with the notifications... They usually work, but we won't stop until at least 90% come through.
- We have a major memory leak somewhere. Instruments isn't helping because most of the leaked memory is happening on system calls that can come from anywhere. This doesn't happen all the time, so you should be able to use the app while I figure out where it comes from.
- We're still taking up about 40MBs (idle) and up to 90MBs of RAM (on heavy updates / UI interaction). This isn't really a problem for 5, 5S and 6 devices but it can quickly become an issue with the 512MBs of RAM in the 4 and 4S devices. Once again, instruments is pointing to some cryptic GPU API calls even though we're seeing spikes to 20MBs to 30MBs once the calendar view loads. Those two controls are uber-expensive and we might need to find an alternative for 4 and 4S devices.
- **Note:** Canteen update has been disabled for testing purposes (i.e. pull to refresh). You can delete all the stored news and meals with the reset button in the settings menu. Then pull to refresh while in the canteen view to download the info again.
### What you can expect for the next buid (aka Dev Priorities):
___
- Less bugs. I know... AWESOME!
- The possibility to update the location database over the air. Because the file doesn't get any bigger than a few MBs it is possible to update it over the air whenever we need to. The app can periodically check for an updated version on myIST servers and download it when it becomes available. There can / should also be an option to manually check for a new version (tucked away in the settings menu).
- Very slight performance improvements as I plan to start deleting a lot of the legacy debug / unused code. We'll probably also be moving to a dedicated logging framework that plays nice with hockey-app so that your crash reports can also contain the NSLog calls that were fired before the crash.
- Password recovery should be fully working in the next build. The app frontend is finished. You should get an email with the reset link if a request is made through the app. However, because the PHP backend is still being finished you won't be able to reset your password.
## Beta Testing
Soon... Pretty pretty soon... I really want to deploy this to another 6-12 people. Start thinking about possible candidates. Ideally, we would start the beta testing with people familiar with iOS. Knowing their way around code is also a big plus. I don't expect them to fix any bugs, but their feedback is usually more helpful.
## Debug Commands
- To delete all the food and news objects go to Personal->Settings->Delete All Content & Settings
- To generate a random in-app news notification go to Personal->Settings and shake the device.
- The last auto-update is shown in the last cell of the settings menu.
- To generate some random events for the current day go to Personal->Settings->Generate Calendar Events for Today.
## Why do I have to delete the app everytime a new update comes in?
As you can probably imagine there is an underlying migration system implemented in core data. That means that when big names (try Facebook, or Twitter) update their core data models stuff keeps working on everyone's devices. This also means that someone had to spend some time telling core data exactly how to migrate from the previous version to the new one. Because we're still in the very early stages of **myIST** and dev time is very limited, we ask you to delete the app so that a migration profile isn't required. This speeds up development and ensures that you get all the latest features on every update. Beta versions will take model migration into account as we move closer to launch.
## But, what if I'm really curious?
Despite what your momma told you, curiosity never actually killed any cats. And it won't kill you, either. There's a reason I spend hours trying to keep the online code repo in sync with my local crazyness. So feel free to check it out. Change something. Break it once or twice. Make me manually merge 800 files because you think something should be a litle less green and more salmon like. Most of the time I have no idea what I'm doing so... what can go wrong anyway ?
Check us out on [myIST@GitHub](https://github.com/UnknownDude74/myIST) or online [myIST@IST](https://web.ist.utl.pt/paulobranco/index.html)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment