v1.6
----

[X]Finalize software cursor design.

[X]Update changelog.

[X]Remove mouse sensitivity Steam Deck override since we found a workaround.

[ ]Ensure Android version is up to the current Play Store standards.

[X]'Exit to OS' is selected on main menu when using touch controls.

[X]Blue line at top of screen on Android.

[X]Clicking outside the click rectangle causes the gameplay to start as soon as
   the mouse is moved into the rectangle.

[X]Dot splat particles should be rendered below overlays.

[X]Player position glitches when moving along edges in windowed mode.

   [X]This is caused by an apparent bug in Allegro with high resolution capable
      apps. When using 'al_set_mouse_pos_xy()' the coordinates are cut in half.
      Won't fix this for now since the game runs in full screen mode.

[X]Menu view is stretched in mobile mode.

[X]Upgrade to the latest version of T3F.

[X]Use padded bitmaps for sprites to alleviate aliasing issues.

[X]0Investigate slowdown when resuming from pause on Steam Deck.

   [X]For some reason, in Steam Deck game mode, hiding the mouse cursor causes
      a delay of several frames as soon as the system hides the cursor. This
      is usually slightly delayed from when the user calls the function to hide
      the cursor.

      To work around this issue, we'll implement a software cursor mode that
      we'll enable when the user is playing on Steam Deck in game mode.

[ ]Use asynchronous object loader for interacting with leaderboards.

[X]Make standalone release use FLOSS licensing.

[X]Player position jumps around when releasing a touch.


Standalone Release Checklist
----------------------------

[X]Ensure switching between mobile and desktop mode works properly for 'Play
   Again?' menu.

[X]Look into issue on Windows where mouse keeps trying to be reactivated when
   using touch input.

   [X]For some reason, touching the screen on my Windows machine occasionally
      generates mouse axis events. I think we can work around this issue by
      adding a touch cooldown timer that resets every time we get a touch
      event. Users probably won't be switching between touch and mouse
      frequently so this should prevent mouse from activating when the user is
      trying to use touch controls.

[X]Open pause menu on click instead of going to pause state.

   [X]I think we should probably remove the pause state and only use the pause
      menu state.

[X]Quitting the game should not bring up the leaderboard.

[X]Make Android packages.

   [X]Fix Android port. It's surely broken after all the changes for the Steam
      release.

      [X]Resuming from pause brings up the game start screen when it should go
         to the touch pause screen.

      [X]Fix joystick input. The accelerometer generates joystick events which
         are trying to be interpreted as XBox controller inputs. We need to
         detect only externally connected controllers and ignore the built-in
         controller if possible. Otherwise, we should just disable controller
         support completely.

         [X]It looks like the Android port of Allegro always has a joystick in
            slot 0 for the accelerometer. We should be able to ignore this slot
            when setting up our input.

         [X]Controller compatibility seems to be handled by the OS. We should
            update the input system with a section for Android that maps
            Android's standard mapping to XBox mapping.
      
      [X]Revamp touch controls.

         [X]Users should be able to treat the touch screen as if it were a
            trackpad.

         [X]Mouse sensitivity option should also apply to touch input.

         [X]Mouse sensitivity setup should mention touch as well since it
            there. 

      [X]Investigate startup issues. When starting the app, it seems to click
         through the menu to gameplay without any input from the user. This
         might be related to the joystick input issue listed above.
      
      [X]Add background color for Android so icon and startup screen look
         right.
         
         [X]Support adaptive and legacy icons.

      [X]Clear the display to the background color used for the Android port
         before loading assets. This should provide the most seamless
         experience for the user.
   
   [X]Automate detection of Play Store build.

      [X]Add compiler flag to define 'T3F_ANDROID_GP' when building the AAB for
         the Play Store.

         [X]We'll probably add a 'CL_CFLAGS' variable for passing extra flags
            to the compiler through the command line.
   
   [X]Create 'android_packages' target that builds all Android packages we need
      for distributing a release.
   
   [X]Look into possible signature issue.

      [X]I ended up having to deprecate the old version of the game since I no
         longer have the original signing key.

   [X]Look into '-DDEBUGMODE' flag. Not sure what this is for, but we might
      want to remove it if it could impact performance in the release. We might
      make an 'android_debug' target that produces a build with that flag set
      if we need it to get debugging features.
   
   [X]See about making our Allegro build release optimized. We shouldn't need
      to debug inside Allegro for the most part. We should be able to get
      logging for our own code if we need it during development.

      [X]Allegro's 'RelWithDebInfo' build mode compiles source code in release
         mode with logging code set up in certain places where speed isn't a
         concern. We don't need to mess with this for now.

[X]Prepare Google Play Store release.

   [X]Make new screenshots for store listing.

      [X]Reuse Steam screenshots. We should make the phone screenshots vertical
         and the tablet screenshots horizontal.

[X]Make non-Steam MacOS package.

   [X]Use same build from Steam release, just without the 'steam.dat' file.

[X]Make non-Steam Linux packages.

   [X]Use same build from Steam release, just without the 'steam.dat' file.

   [X]Produce 32-bit build.

      [X]Update dependencies for 32-bit build.

[X]Make non-Steam Windows package.

   [X]Use same build from Steam release, just without the 'steam.dat' file.


v1.4.3
------

[X]Look into leaderboard key issue. Upon loading the game up for the first time
   on a fresh account, the game said it was retrieving a key. The score didn't
   upload to the leaderboard. Reloading the game gave the retrieving a key
   message again. The current high score uploaded but didn't show up in the
   list. Reloading the game didn't retrieve a key again but the previously
   obtained high score didn't attempt to upload again.

   [X]It appears the leaderboard score upload code utilizes a cached copy of
      the user key. This cached copy is only updated when the game is initially
      launched, thus the newly retrieved key won't be cached and be able to be
      used until the game is exited and relaunched.

      [X]A simple fix would be to cache the key immediately after it is
         retrieved. It's possible the user could enable score uploads but not
         have a key when it's time to upload a score. We should ensure the user
         is required to have a key before a score gets uploaded.

         We can probably cache the key in dot_get_leaderboard_user_key() and
         call dot_get_leaderboard_user_key() in dot_upload_current_high_score()
         to check for the key before attempting the upload.


v1.3.1
------

[X]Users seem to think the game is too difficult. It might be a good idea to
   have the current difficulty level be hard mode and making the default mode
   a little easier.

[X]Tweak extra life threshold for normal mode. The target should be 4 1-ups by
   level 10 without combos.

[X]Add extra life sound effect.

[X]Look into revamping mouse controls to allow for modifying sensitivity.

   [X]Tweak default mouse sensitivity to match the original controls.

      [X]This is not possible, at least on MacOS, due to implicity scaling of
         mouse coordinates. We'll default the sensitivity to 0 and reimplement
         the old mouse controls for when the setting is 0. Adjusting the
         sensitivity up will switch to relative mode.

   [X]Add mouse sensitivity to setup.

      [X]Use multiplier instead of slider. We'll make the multiplier go up by
         0.1 up to a maximum of 2.0 probably.

[X]Look into leaderboard upload freeze and crash.


v1.3
----

[X]Leaderboards are crashing on download.

   [X]We are getting 11 entries when the limit is supposed to be 10. This
      suggests the leaderboard script on the site is broken.
   
   [X]The 11th entry is what is causing the program to crash. We need to go
      back over the leaderboard code in T3Net to see what's going on. It seems
      like the leaderboard code is expecting the amount of data to amount to
      10 entries but is trying to stuff 11 entries in. We should fix this first
      to ensure the system can handle arbitrary amounts of data correctly.

      [X]I've confirmed the leaderboard code in T3Net is trying to fill past
         the end of a buffer. We need to respect the user entry count specified
         when creating the leaderboard data. The update code should be modified
         to only fill the available space, not assume the server is dishing out
         the correct number of entries.


[X]Update MacOS XBox controller implementation to work properly with the latest
   version of Allegro.

[X]Oops achievement triggers incorrectly.

[X]Update license to include sharing clause.

[X]Put some default scores on the leaderboard.

[X]Investigate mouse warping bug. When moving the character to the top of the
   screen, the mouse position temporarily jumped to another location once on
   MacOS.

   [X]I'm thinking this might be more issues related to al_set_mouse_xy() and
      the event queue. It might be necessary to create a timestamp of when
      al_set_mouse_xy() was called and ignore events that were generated before
      it was called.

      Looking at T3F's internal logic, I think it is possible for a timer tick
      to happen between the time the mouse position is updated after the
      al_set_mouse_xy() call and more mouse events from the unadjusted position
      are generated. The timestamp method should fix this issue for good.

[X]Ensure level 10 can be finished.

[X]Automatically pull Steam dynamic library from SDK for packaging. This should
   prevent possible version mismatch issues.

[X]Update README.

   [X]Mention controller support.

[X]Test new achievements handling code.

[X]See about keeping mouse inside the play area with set_mouse_xy().

[X]Rework license to deal with conflicts.

   [X]Bundled software and libraries should maintain their own license. We need
      to find a license that is compatible with including bundled software that
      is not open source.

[X]Restart through Steam on first run.

   [X]Detect whether the user owns the Steam version.

      [X]Generate 'bin/data/steam.dat' that sits next to 'bin/data/t3f.dat' when
         building the 'data_package' target. We'll use the existence of this
         file to determine if the user has the Steam release.

[X]Investigate leaderboard crash.

   [X]It seems to be something to do with the T3Net text parser. We should log
      the raw data T3Net gets from the server so we can investigate in the
      evenet of a crash.

      [X]I wasn't able to directly duplicate the crash, but I did find some
         potential for crashing in the T3Net code. I was able to make it crash
         by giving it malformed data. I reworked the code to handle malformed
         data and gracefully fail.

[X]Prevent casual cheating.

   [X]Rewrite obfuscation to make it harder to accidentally pass verification.

   [X]Store obfuscated score in user data.

   [X]Scores that don't pass verification will silently not upload. The user
      will still see their unobfuscated score as if nothing is amiss. The
      'Score Uploaded' key will be removed so no future attempt will be made to
      upload the fraudulent score.

[X]Add 'source_only' packaging target. This will package the source code
   without the game data.

   [X]Source only package should include everything except the files in the
      'bin/data' folder.

[X]Include source code package in 'steam_binary_package' target.

[X]Audit source code packaging code to ensure it is packaging the whole source
   tree. Currently, it is missing the 'windows' folder at least.

[X]Update license.

   [X]Finalize T Cubed Software Standard Software License.

      [X]Codify user ownership details.

      [X]Codify dual-license setup.

      [X]Codify GPL fallback.

[X]Add 'source.txt' to documentation to explain source code.

[X]Update README.

[X]Make game start message relevant to the current control scheme.

[X]Make 'steam_binary_package' target include binary blobs for the current
   platform in the ZIP file.

   [X]Windows.

   [X]Linux.

   [X]MacOS.

[X]Show message when retrieving/updating user key.

[X]Cannot touch to resume from pause screen.

[X]Investigate player character jump on switch from controller to mouse
   further. I saw this happen again on the Steam Deck.

   [X]Could not reproduce.

[X]Pause menu overlay doesn't extend all the way to the right on Steam Deck.

[X]Leaderboard upload/download screen overlay doesn't extend all the way to the
   right on Steam Deck.

[X]Switching from touch to controller doesn't work properly on Steam Deck.
   Resume menu item goes back to pause screen after touch controls have been
   used.

[X]Game should pause when pressing Escape at start screen.

[X]When switching from controller to mouse we get inconsistent behavior.
   Sometimes the game pauses, sometimes it doesn't. The correct behavior is to
   let the player take over the game with mouse without pausing.

[X]When switching from controller to mouse, the player character's position
   sometimes jumps back to the last mouse position for a frame before going
   to the correct position.

   [X]This was being caused by mouse events building up in the queue during the
      game's logic and causing the framework's mouse coordinates to be updated
      with outdated mouse coordinates. On occasion, these outdated coordinates
      would be applied to the game logic if the timer happened to tick again
      before all of the old coordinates were flushed out.

      The fix was to separate the event logic from the user logic and keep a
      copy of the warp coordinates to reapply on the next set of user logic
      frames. This ensures the mouse won't jump all the way back to an outdated
      location, but does potentially open us up to some slight jitter if there
      are newer coordinates in the event queue that occurred after the warp. In
      practice, I haven't seen any jitter issues, but just wanted to mention it
      here in case it comes up in the future.

[X]Hide mouse cursor when switching to mouse mode.

   [X]To reproduce the issue. Start the game with mouse. Pause with keyboard
      key. Unpause with keyboard then switch back to mouse by moving the mouse.

[X]Research crash on Steam Deck after score upload/download combo.

[X]In-game overlays don't extend all the way to the right edge under certain
   display resolutions.

[X]Investigate right touchpad issue on Steam Deck. Touching the right touchpad
   seems to activate a touch interaction. When trying to use the touchpad to
   control the game, the game goes into touch mode after click.

   [X]Clicking the right touchpad does an R3 joystick press. We should not
      allow L3 and R3 to be used as buttons in the game. Treat R3 as mouse
      click.

   [X]Fixed by publishing an official layout on Steam.

[X]Investigate leaderboards not working on Steam Deck.

   [X]We need to delete the temp file after getting the information out of it.
      If curl fails at some point in the future, the user will get outdated
      data left over from a previous curl call.

   [X]curl seems to be failing to run. We should temporarily replace the
      executable on Steam Deck with a debug program that tests curl.

      [X]curl wasn't running due to missing shared objects. This was solved by
         explicitly setting the library load path as part of the command used to
         run curl.

[X]Ensure game can be launched if Steam doesn't exist on the user's system.
   Currently, the game will attempt to relaunch through Steam the first time
   it is run.

[X]Ensure touch screen can't be used to skip around the board.

   [X]The SteamWorks setting for touch screen is set to touch API passthrough
      which should fix the problem. Need to test on Steam Deck.

   [X]Touch controls should be enabled through Allegro's touch API if it is
      available on Linux.

   [X]Ensure in-game touch input switches the input mode so we get the correct
      pause behavior.

   [X]Pressing a controller button when in the mouse/touch pause screen should
      bring up the pause menu.

[X]Investigate crash at game complete.

[X]Investigate MacOS launch issues. When launching the initial MacOS Steam
   build, the music would play but there was no window. I believe this had to
   do with the Info.plist incorrectly disabling high resolution support. Since
   the game was being launched previously with high resolution support, the
   window size might have been too large, causing it to fail to be created.
   When high resolution support is disabled, the actual window dimensions are
   automatically doubled.

   To test this, we should launch the game from a bundle with high resolution
   support enabled and close it. Create a new bundle with high resolution
   support disabled and launch again. This should simulate the situation I
   believe caused the launch issue. If the results check out, this issue can be
   considered complete since we already fixed the Info.plist setting.

[X]Achievements don't appear to be triggering properly.

[X]Ensure achievements sync up to Steam.

   [X]Set flag in user data when it's time to store achievements. Even if Steam
      integration is off at the moment, the user may launch the game from Steam
      later. We should check the flag at startup to store any unstored
      achievements.

   [X]Clear the flag when storage is successful.

   [X]This process should be automated as much as possible. We might handle
      this in steam_logic() since the user has to call that anyway. We should
      set up a proper retry interval so as not to overwhelm the network.

[X]Make score upload more robust.

   [X]Retry score uploads later if score upload failed.

   [X]Only upload score if it is better than previously uploaded score.

[X]Add achievements.

   [X]We'll track achievements internally but not have in-game visibility to
      them. We want the achievements to update even if the game is not running
      under Steam. The Steam side will be updated on launch and as achievements
      are unlocked while running through Steam.

[X]Look into full screen not working on Windows.

[X]Add 'APP_DIRECTORY' variable for specifying a directory for config and data
   saves that's separate from the application title. For some apps, we'll want
   to share the location between different versions.

   [X]Default to $APP_TITLE for simplicity.

   [X]Pass $APP_DIRECTORY to compiler arguments in place of $APP_TITLE.

[X]See if we can get ranked leaderboards working.

   [X]Generate user key at startup if one does not exist.

   [X]Update leaderboard script to accept user keys for insertion and selection
      operations. Use of user key will branch to the modern leaderboard style.

      [X]When submitting a score with user key, check if the submitted score is
         better than the existing one for that user key, game, mode, etc.
         before replacing. We need a way to specify if lower or higher is
         better.

      [X]Consider removing backwards compatibility since the games have to be
         updated anyway to work with the new site.

[X]Store user save data in separate INI file to enable proper cloud synching.

[X]Find a way to separate config and user data on Windows.

[X]Finish XBox controller implementation.

   [X]Add Linux XBox controller configuration.

   [X]Add Windows XBox controller configuration.

   [X]See if we can fix initial joystick state on MacOS.

[X]Make new input system respect user configured dead zone.

[X]Show a pause menu when using something other than a pointing device to pause
   the game. Users should be able to decide what to do on whichever device they
   happen to be using.

[X]If the controller in use disconnects, pause the game.

   [X]We should try to implement joystick reconfiguration events into the new
      input system. We'll probably need to rework the framework a bit to handle
      this properly.

[X]Research joystick issues.

   [X]XBox controllers have issues with axes on Linux.

      [X]Fixed by making the default dead zone a bit larger and only selecting
         a stick on a gamepad with axis events if it exceeds the dead zone.

   [X]Implement new input module in T3F (see 'T3F/issues.txt' for more info).

   [X]Steam will map input from controllers to XBox mapping for us. We need to
      detect if the game is running through Steam and use XBox mapping if that
      is the case. This means we don't need to use SteamInput, but we'll still
      need to detect if game is running through Steam.

      [X]I think the simplest way to detect Steam is to see if SteamWorks will
         initialize. We should try to do this during t3f_initialize() so we
         can make informed decisions from our game's init code about input
         configuration.

      [X]Make XBox-style input default in the new input module. We might
         consider just assuming XBox and letting the user override the settings
         if it's not working for them.

[X]Look into issue where name entry menu did not dismiss properly, leaving the
   text entry mode on while on another menu.

   [X]Don't accept menu navigation keys when in text input mode. The menu
      malfunctions when using keys associated with menu navigation.

[ ]Had issue where lifting finger during gameplay would not pause the game on
   Android.

[X]Implement fallback system for graphics loading. If all graphics don't load,
   fall back to the previous multiplier until we succeed.

[X]Test graphics for all size multipliers.

[X]Look into score particles being one pixel too tall.

   [X]Move particle list generation to main init routine. Load the size 16 font
      as 1x temporarily while we generate the particle list.

[X]Look into first frame being wrong at game start when running at low frame
   rate during testing. I think it might be caused by rendering happening
   before the level color is calculated in the logic. If that's the case, we
   can prime that variable at game init.

[X]Use Android functionality to run URLs for T3Net.

   [X]Implemented, but doesn't seem to work. Needs debugging.

[X]When controller active, ensure menu item is selected.

[X]Update server-side leaderboard code.

   [X]There should only be one version of the leaderboard code on the site.

   [X]The current code doesn't seem to produce any output. Probably some syntax
      error in the PHP code.

[X]Check for initial click during gameplay so we don't drop onto the board if
   if we already had the mouse button down.

[X]Window is too small on Macs with high resolution display. Consider adding
   option to set the window size.

   [X]Added optimal window size detection.

[X]Consider adding a small border around the gameplay area in the desktop
   version. I find I frequently accidentally venture slightly outside the game
   window, causing the game to pause.

   [X]The game now starts in full screen, so this isn't as big of an issue any
      more.

[X]Make dots with other dots behind them translucent. Sometimes a dot is hiding
   under another dot, causing the player to unfairly lose.

[X]Score particles sometimes aren't shaped like the number characters they are
   supposed to be based on.

[X]Enable controller support. All 'sticks' should be scanned and player
   movement should be controllable with the first two axes. Any button should
   be usable for selection.

[X]Enable keyboard support. Cursor keys or WASD should be usable for movement.
   Enter and Space Bar should be usable for selection.

[X]When moving character in a straight line, the angle lands incorrectly. We
   might want to disable the jitter protection when using controllers.

[ ]Moving mouse when controller is enabled causes the player position to jump
   to incorrect location for a frame or two.

   [ ]Thought this was fixed, but noticed it happened again.

[X]Pushing controller button should pause game.

[X]Pushing diagonally on d-pad or keyboard keys should mimic the circular shape
   of gamepad analog sticks.

   [X]Use distance formula on final x and y values. If distance > 1.0, get the
      angle and use cos() and sin() to update the final value.

[X]HUD does not render all the way to the edge under certain circumstances.

   [X]Modified t3f_set_clipping_rectangle() to attempt fix. Needs testing.

[X]Darkening overlay during game start and pause states doesn't cover the
   entire play area under certain circumstances.

   [X]Modified t3f_set_clipping_rectangle() to attempt fix. Needs testing.

[X]Add Quit option to main menu so gamepad players don't have to reach for the
   keyboard.

[X]Use T3F font engine to generate high resolution font based on target
   resolution.

[X]Menu system doesn't behave properly on item hover. Item should hover up and
   to the right to match aesthetic. Shadow also appears to be too dark.


Old Issues
----------

[X]Adjust ball size to make game more playable on phones. This will require
   adjusting the level setup charts as well.

[X]Implement online leaderboards.

[X]Implement options.

[X]Add combo time indicator.

   [X]I am thinking a translucent circle that diminishes as the timer runs down
      will do the trick nicely.

[X]Add particle effects.

   [X]Each collected dot should spray particles.

   [X]Smashing into incorrect colored dot should spray particles.

   [X]Possibly generate a large spray of particles to indicate certain points
      thresholds, similar to Quadnet.

      [X]Particles each time score multiplier resets and points are added to
         score.

[X]Display received points somehow.

   See above issue.

[X]Possibly make level speed multiplier dependent on number of collected balls
   instead of elapsed time.

[X]Fix text shadows to match other graphics.

[X]Render higher resolution of combo graphic since we scale it up quite a bit.

[X]Make sure we handle halt and resume correctly for Android.

[X]Implement level colors.

   [X]There will be 10 different level colors. Every 10 levels the same colors
      will repeat in darker variations.

   [X]Colors will probably start with sky blue and transition over to red for
      the final color.

[X]Add cancel/back option to menus where applicable.

[X]Show leaderboard after each game when upload is enabled. If your score is on
   the list, it should be highlighted.

   [X]This screen should display a menu to play again or go back to the intro
      screen.

[X]Add proper cleanup at exit.

[X]Write documentation.

   [X]Need changelog.

   [X]Need readme.

   [X]Need license.

[X]Add in-game privacy statement.

[X]Finish credits.

[X]Finalize HUD layout.

   [X]Need to show number of lives remaining.

   [X]Need to space everything out so it looks nice.

   [X]Implement emotion graphics.

      [X]Character representation on the HUD should react to what's happening
         in the game.

         [X]Need to replace emotion graphics with ones that match the size of
            the in-game graphics.

[X]Add intro screen music.

[X]Change outline of black dot from white to black.

[X]Tweak level colors.

   [X]Adjust level colors so we don't get levels that hurt the player's eyes.

[X]Create project page.

   [X]Add project to database.

   [X]Upload screenshots.

   [X]Upload all versions of the game.

   [X]Upload soundtrack packages.

[X]Create store listing for Google Play.

   [X]Create promo graphics.

   [X]Upload APK.

[X]Make demo video.

[X]Seed leaderboard.

   [X]Erase old scores and add low placeholder scores.

[X]Release game.

   [X]Post announcement on the web site.

   [X]Post announcement on Facebook.

[X]Add color blind mode.

   [X]Probably just add an indicator that shows which dots you can currently
      collect.

[X]Make a desktop version.

   [X]Desktop version should cut out the track pad area. This will require
      adding a separate state for the desktop menu screen.

   [X]Use a variable to toggle desktop mode. This way we can still get mobile
      mode with a command line switch when we want to record a demo video.

   [X]Only use ALLEGRO_ANDROID to autodetect the mobile version. Make other
      logic use the desktop/mobile variable.

   [X]Use mouse control the game.

   [X]Need to wait for click before starting game.

   [X]Need to wait for click to unpause game.

   [X]Right-click to pause.

   [X]Pause when mouse leaves play area.

   [X]Add ability to enter profile name.

   [X]Put intro menu off screen and transition from title to menu when mouse
      clicked (transition should be quick). Pressing escape will transition
      back to the title screen.

   [X]Click to dismiss leaderboard since we can't show the menu.

      [X]Go to retry menu if we are in the post-game leaderboard screen.

[X]Show profile menu on first launch.

[X]Release v1.1

   [X]Build 32- and 64-bit Debian packages.

      [X]Make sure Debian descriptions are properly formatted.

      [X]Make sure we specify all dependencies.

   [X]Build Windows package.

      [X]Docs need to be renamed to license.txt, history.txt, and readme.txt.

         [X]We should have this done automatically by the build script.

   [X]Build Mac package.

   [X]Build source package.

      [X]Write build.txt instructions.

      [X]Make sure all folders are packaged.

   [X]Upload packages.

   [X]Add files to database.

   [X]Post news item.

[X]Push framework changes back to T3F master.

   [X]Build scripts need to be updated.

      [X]Make sure to import changes from makefile.defines.

   [X]Copy template back to T3F master in case we made any changes.
