diff --git a/Makefile b/Makefile
index 336e5120..65a244de 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,19 @@
-default:
+default: mkdefault
+
+local: mklocal
+mobile: mkmobile
+
+mkdefault:
./build.py
+mklocal:
+ ./build.py local
+
+mkmobile:
+ ./build.py mobile
+ adb install -r build/mobile/IITC_Mobile-debug.apk
+ adb shell am start -n com.cradle.iitc_mobile/com.cradle.iitc_mobile.IITC_Mobile
clean:
ant -f mobile/build.xml clean
+
diff --git a/assets/prefer-iitc.psd b/assets/prefer-iitc.psd
new file mode 100644
index 00000000..bf0e1424
Binary files /dev/null and b/assets/prefer-iitc.psd differ
diff --git a/build.py b/build.py
index 97f808e6..ec04387d 100755
--- a/build.py
+++ b/build.py
@@ -289,6 +289,7 @@ if buildMobile:
if retcode != 0:
print ("Error: mobile app failed to build. ant returned %d" % retcode)
+ exit(1) # ant may return 256, but python seems to allow only values <256
else:
shutil.copy("mobile/bin/IITC_Mobile-%s.apk" % buildMobile, os.path.join(outDir,"IITC_Mobile-%s.apk" % buildMobile) )
diff --git a/code/artifact.js b/code/artifact.js
index 88676ab5..d52abc72 100644
--- a/code/artifact.js
+++ b/code/artifact.js
@@ -20,7 +20,8 @@ window.artifact.setup = function() {
addResumeFunction(artifact.idleResume);
- artifact.requestData();
+ // move the initial data request onto a very short timer. prevents thrown exceptions causing IITC boot failures
+ setTimeout (artifact.requestData, 1);
artifact._layer = new L.LayerGroup();
addLayerGroup ('Artifacts (Jarvis shards)', artifact._layer, true);
@@ -246,7 +247,10 @@ window.artifact.showArtifactList = function() {
}
if (data[type].fragments) {
- row += 'Shard: #'+data[type].fragments.join(', #')+' ';
+ if (data[type].target) {
+ row += '
';
+ }
+ row += 'Shard: #'+data[type].fragments.join(', #')+' ';
sortVal = Math.min.apply(null, data[type].fragments); // use min shard number at portal as sort key
}
diff --git a/code/chat.js b/code/chat.js
index 31d7092d..50cb8fec 100644
--- a/code/chat.js
+++ b/code/chat.js
@@ -106,7 +106,7 @@ window.chat.genPostData = function(isFaction, storageHash, getOlderMsgs) {
// Currently this edge case is not handled. Let’s see if this is a
// problem in crowded areas.
$.extend(data, {minTimestampMs: min});
- // when requesting with an acutal minimum timestamp, request oldest rather than newest first.
+ // when requesting with an actual minimum timestamp, request oldest rather than newest first.
// this matches the stock intel site, and ensures no gaps when continuing after an extended idle period
if (min > -1) $.extend(data, {ascendingTimestampOrder: true});
}
@@ -228,12 +228,12 @@ window.chat.renderCompact = function(oldMsgsWereAdded) {
$.each(chat._public.data, function(guid, entry) {
// skip player msgs
if(!entry[1]) return true;
- var pguid = entry[3];
+ var nick = entry[3];
// ignore if player has newer data
- if(data[pguid] && data[pguid][0] > entry[0]) return true;
- data[pguid] = entry;
+ if(data[nick] && data[nick][0] > entry[0]) return true;
+ data[nick] = entry;
});
- // data keys are now player guids instead of message guids. However,
+ // data keys are now player nicks instead of message guids. However,
// it is all the same to renderData.
chat.renderData(data, 'chatcompact', oldMsgsWereAdded);
}
@@ -350,7 +350,7 @@ window.chat.writeDataToHash = function(newData, storageHash, isPublicChannel, is
// format: timestamp, autogenerated, HTML message
- storageHash.data[json[0]] = [json[1], auto, chat.renderMsg(msg, nick, time, team, msgToPlayer, systemNarrowcast)];
+ storageHash.data[json[0]] = [json[1], auto, chat.renderMsg(msg, nick, time, team, msgToPlayer, systemNarrowcast), nick];
});
}
diff --git a/code/game_status.js b/code/game_status.js
index 10fe8d2c..94d24a6f 100644
--- a/code/game_status.js
+++ b/code/game_status.js
@@ -6,7 +6,8 @@ window.updateGameScoreFailCount = 0;
window.updateGameScore = function(data) {
if(!data) {
- window.postAjax('getGameScore', {}, window.updateGameScore);
+ // move the postAjax call onto a very short timer. this way, if it throws an exception, it won't prevent IITC booting
+ setTimeout (function() { window.postAjax('getGameScore', {}, window.updateGameScore); }, 1);
return;
}
diff --git a/code/hooks.js b/code/hooks.js
index fb295655..1de476f3 100644
--- a/code/hooks.js
+++ b/code/hooks.js
@@ -50,6 +50,10 @@
// iitcLoaded: called after IITC and all plugins loaded
// portalDetailLoaded: called when a request to load full portal detail
// completes. guid, success, details parameters
+// paneChanged called when the current pane has changed. On desktop,
+// this only selects the current chat pane; on mobile, it
+// also switches between map, info and other panes defined
+// by plugins
window._hooks = {}
window.VALID_HOOKS = [
@@ -60,30 +64,32 @@ window.VALID_HOOKS = [
'publicChatDataAvailable', 'factionChatDataAvailable',
'requestFinished', 'nicknameClicked',
'geoSearch', 'iitcLoaded',
- 'portalDetailLoaded'];
+ 'portalDetailLoaded', 'paneChanged'];
window.runHooks = function(event, data) {
if(VALID_HOOKS.indexOf(event) === -1) throw('Unknown event type: ' + event);
if(!_hooks[event]) return true;
- var interupted = false;
+ var interrupted = false;
$.each(_hooks[event], function(ind, callback) {
try {
if (callback(data) === false) {
- interupted = true;
+ interrupted = true;
return false; //break from $.each
}
} catch(err) {
console.error('error running hook '+event+', error: '+err);
+ debugger;
}
});
- return !interupted;
+ return !interrupted;
}
window.addHook = function(event, callback) {
if(VALID_HOOKS.indexOf(event) === -1) {
console.error('addHook: Unknown event type: ' + event + ' - ignoring');
+ debugger;
return;
}
diff --git a/code/map_data_calc_tools.js b/code/map_data_calc_tools.js
index 884acc40..a2c3369c 100644
--- a/code/map_data_calc_tools.js
+++ b/code/map_data_calc_tools.js
@@ -6,7 +6,7 @@
// tile and a quadkey. Both the bounds and the quadkey are “somewhat”
// required to get complete data.
//
-// Convertion functions courtesy of
+// Conversion functions courtesy of
// http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
diff --git a/code/map_data_render.js b/code/map_data_render.js
index 6606a022..53ce23a4 100644
--- a/code/map_data_render.js
+++ b/code/map_data_render.js
@@ -470,7 +470,7 @@ window.Render.prototype.addPortalToMapLayer = function(portal) {
this.portalClusters[cid].push(portal.options.guid);
- // now, at this point, we could match the above re-clustr code - sorting, and adding/removing as necessary
+ // now, at this point, we could match the above re-cluster code - sorting, and adding/removing as necessary
// however, it won't make a lot of visible difference compared to just pushing to the end of the list, then
// adding to the visible layer if the list is below the limit
if (this.portalClusters[cid].length < this.CLUSTER_PORTAL_LIMIT || portal.options.guid == selectedPortal || artifact.isInterestingPortal(portal.options.guid)) {
diff --git a/code/map_data_request.js b/code/map_data_request.js
index 9c4f52be..1326d852 100644
--- a/code/map_data_request.js
+++ b/code/map_data_request.js
@@ -16,8 +16,9 @@ window.MapDataRequest = function() {
// no more than this many requests in parallel. stock site seems to rely on browser limits (6, usually), sending
- // all requests at once. using our own queue limit ensures that other requests (e.g. chat) don't get postponed for too long
- this.MAX_REQUESTS = 6;
+ // many requests at once.
+ // using our own queue limit ensures that other requests (e.g. chat, portal details) don't get delayed
+ this.MAX_REQUESTS = 5;
// no more than this many tiles in one request
// as of 2013-11-11, or possibly the release before that, the stock site was changed to only request four tiles at a time
@@ -28,7 +29,7 @@ window.MapDataRequest = function() {
this.MIN_TILES_PER_REQUEST = 4;
// number of times to retry a tile after a 'bad' error (i.e. not a timeout)
- this.MAX_TILE_RETRIES = 1;
+ this.MAX_TILE_RETRIES = 2;
// refresh timers
this.MOVE_REFRESH = 1; //time, after a map move (pan/zoom) before starting the refresh processing
diff --git a/code/munge.js b/code/munge.js
index f696cce0..30a5ecc1 100644
--- a/code/munge.js
+++ b/code/munge.js
@@ -12,50 +12,58 @@
;(function(){
var requestParameterMunges = [
- // obsolete munge sets (they don't have some of the new parameters) deleted
+ // all old munge sets deleted - there's no sign that any old ones will become active again
- // set 10 - 2013-11-27
- {
- 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO
- 'dashboard.getGameScore': '4oid643d9zc168hs', // GET_GAME_SCORE
- 'dashboard.getPaginatedPlexts': 's1msyywq51ntudpe', // GET_PAGINATED_PLEXTS
- 'dashboard.getThinnedEntities': '4467ff9bgxxe4csa', // GET_THINNED_ENTITIES
- 'dashboard.getPortalDetails': 'c00thnhf1yp3z6mn', // GET_PORTAL_DETAILS
- 'dashboard.redeemReward': '66l9ivg39ygfqqjm', // REDEEM_REWARD
- 'dashboard.sendInviteEmail': 'cgb7hi5hglv0xx8k', // SEND_INVITE_EMAIL
- 'dashboard.sendPlext': 'etn9xq7brd6947kq', // SEND_PLEXT
-
- // common parameters
- method: 'yyngyttbmmbuvdpa',
- version: 'avz401t36lzrapis',
- version_parameter: 'c5d0a5d608f729a1232bebdc12fb86ba5fb6c43f',
-
- // GET_THINNED_ENTITIES
- quadKeys: '1mpmxz2yun22rwnn',
-
- // GET_PAGINATED_PLEXTS
- desiredNumItems: 'nzd23jqm9k1cnnij',
- minLatE6: '0dod6onpa1s4fezp',
- minLngE6: 'soass3t7mm7anneo',
- maxLatE6: 'cvarmr3o00ngylo1',
- maxLngE6: 'udzwnlx07hzd3bfo',
- minTimestampMs: '9iiiks138gkf8xho',
- maxTimestampMs: '94wm0u3sc3sgzq7x',
- chatTab: 'tqfj4a3okzn5v5o1',
- ascendingTimestampOrder: '5jv1m90sq35u6utq',
-
- // SEND_PLEXT
- message: '8exta9k7y8huhqmc',
- latE6: 'kqek161gza3kjcry',
- lngE6: '3dlxsqrjj2vcmhbc',
-// chatTab: 'efaznrayv5n3jxs0', //guessed parameter name - only seen munged
-
- // GET_PORTAL_DETAILS
- guid: 'seg6ohxgnqf9xu9w',
-
- // SEND_INVITE_EMAIL
- inviteeEmailAddress: '8exta9k7y8huhqmc',
- },
+// the current munge set auto-detection code is working very well. as any site update that breaks that detection
+// code will also, almost certainly, change the munges in use, it seems pointless keeping this set up to date by hand
+// at this time. If that auto-detection breaks, it may be easier to quicky add a munge set by hand than update
+// the regular expressions, so the list-based code remains available for the future
+// // set 11 - 2013-12-06
+// {
+// 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO
+// 'dashboard.getGameScore': '4oid643d9zc168hs', // GET_GAME_SCORE
+// 'dashboard.getPaginatedPlexts': 's1msyywq51ntudpe', // GET_PAGINATED_PLEXTS
+// 'dashboard.getThinnedEntities': '4467ff9bgxxe4csa', // GET_THINNED_ENTITIES
+// 'dashboard.getPortalDetails': 'c00thnhf1yp3z6mn', // GET_PORTAL_DETAILS
+// 'dashboard.redeemReward': 'ivshfv9zvyfxyqcd', // REDEEM_REWARD
+// 'dashboard.sendInviteEmail': '1rsx15vc0m8wwdax', // SEND_INVITE_EMAIL
+// 'dashboard.sendPlext': 'tods2imd0xcfsug6', // SEND_PLEXT
+//
+// // common parameters
+// method: '0wvzluo8av4sk17f',
+// version: 'paeh4g353xu06kfg',
+// version_parameter: '4acc1e3230c3fd66be3422c0df8dc637336bbd7c',
+//
+// // GET_THINNED_ENTITIES
+// quadKeys: 'ilgv0w4dlldky1yh',
+//
+// // GET_PORTAL_DETAILS
+// guid: '7o8tzmj6oxz1n5w3',
+//
+// // REDEEM_REWARD
+// passcode: 'passcode', // no munging on this parameter
+//
+// // SEND_INVITE_EMAIL
+// inviteeEmailAddress: 'p4rwszdfovuwfdgp',
+//
+// // GET_PAGINATED_PLEXTS
+// desiredNumItems: 'kxsbuvc90l6f40xn',
+// minLatE6: 'llizye3i5dbapxac',
+// minLngE6: 'w01zpiba1mn5tsab',
+// maxLatE6: 'd5phhqzj2tbsq599',
+// maxLngE6: 'avq5srnvg431aehn',
+// minTimestampMs: 'mhsav5by25wi4s46',
+// maxTimestampMs: 'hpu7l8h7eccwytyt',
+// chatTab: 'q9343nem7hs1v37b',
+// ascendingTimestampOrder: '7pc5c9ggh03pig1b',
+//
+// // SEND_PLEXT
+// message: '8exta9k7y8huhqmc',
+// latE6: '7ffwyf3zd2yf8xam',
+// lngE6: 'n7ewiach2v22iy20',
+//// chatTab: 'q9343nem7hs1v37b', // duplicate from GET_PAGINATED_PLEXTS
+//
+// },
];
diff --git a/code/panes.js b/code/panes.js
index 4c3898d4..c5ea4eea 100644
--- a/code/panes.js
+++ b/code/panes.js
@@ -3,6 +3,8 @@
window.show = function(id) {
window.hideall();
+ runHooks("paneChanged", id);
+
switch(id) {
case 'full':
window.chat.show('full');
@@ -27,9 +29,6 @@ window.show = function(id) {
case 'info':
window.smartphone.sideButton.click();
break;
- default:
- window.smartphone.mapButton.click();
- break;
}
if (typeof android !== 'undefined' && android && android.switchToPane) {
diff --git a/code/portal_data.js b/code/portal_data.js
index cf5aa62b..0caca9e1 100644
--- a/code/portal_data.js
+++ b/code/portal_data.js
@@ -21,6 +21,11 @@ window.getPortalLinks = function(guid) {
return links;
}
+window.getPortalLinksCount = function(guid) {
+ var links = getPortalLinks(guid);
+ return links.in.length+links.out.length;
+}
+
// search through the fields for all that reference a portal
window.getPortalFields = function(guid) {
@@ -40,6 +45,11 @@ window.getPortalFields = function(guid) {
return fields;
}
+window.getPortalFieldsCount = function(guid) {
+ var fields = getPortalFields(guid);
+ return fields.length;
+}
+
// find the lat/lon for a portal, using any and all available data
// (we have the list of portals, the cached portal details, plus links and fields as sources of portal locations)
@@ -79,3 +89,48 @@ window.findPortalLatLng = function(guid) {
// no luck finding portal lat/lng
return undefined;
}
+
+
+// get the AP gains from a portal, based only on the brief summary data from portals, links and fields
+// not entirely accurate - but available for all portals on the screen
+window.getPortalApGain = function(guid) {
+
+ var p = window.portals[guid];
+ if (p) {
+ var data = p.options.data;
+
+ var linkCount = getPortalLinksCount(guid);
+ var fieldCount = getPortalFieldsCount(guid);
+
+ var result = portalApGainMaths(data.resCount, linkCount, fieldCount);
+ return result;
+ }
+
+ return undefined;
+}
+
+// given counts of resonators, links and fields, calculate the available AP
+// doesn't take account AP for resonator upgrades or AP for adding mods
+window.portalApGainMaths = function(resCount, linkCount, fieldCount) {
+
+ var deployAp = (8-resCount)*DEPLOY_RESONATOR;
+ if (resCount == 0) deployAp += CAPTURE_PORTAL;
+ if (resCount != 8) deployAp += COMPLETION_BONUS;
+ // there could also be AP for upgrading existing resonators, and for deploying mods - but we don't have data for that
+ var friendlyAp = deployAp;
+
+ var destroyResoAp = resCount*DESTROY_RESONATOR;
+ var destroyLinkAp = linkCount*DESTROY_LINK;
+ var destroyFieldAp = fieldCount*DESTROY_FIELD;
+ var captureAp = CAPTURE_PORTAL + 8 * DEPLOY_RESONATOR + COMPLETION_BONUS;
+ var destroyAp = destroyResoAp+destroyLinkAp+destroyFieldAp;
+ var enemyAp = destroyAp+captureAp;
+
+ return {
+ friendlyAp: friendlyAp,
+ enemyAp: enemyAp,
+ destroyAp: destroyAp,
+ destroyResoAp: destroyResoAp,
+ captureAp: captureAp
+ }
+}
diff --git a/code/portal_detail.js b/code/portal_detail.js
index e99d5b7a..0f5557ab 100644
--- a/code/portal_detail.js
+++ b/code/portal_detail.js
@@ -1,5 +1,5 @@
/// PORTAL DETAIL //////////////////////////////////////
-// code to retrieve the new potal detail data from the servers
+// code to retrieve the new portal detail data from the servers
// NOTE: the API for portal detailed information is NOT FINAL
// this is a temporary measure to get things working again after a major change to the intel map
@@ -54,6 +54,6 @@ window.portalDetail.request = function(guid) {
-})(); // anonumous wrapper function end
+})(); // anonymous wrapper function end
diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js
index 231e9716..4fc9cd9b 100644
--- a/code/portal_detail_display.js
+++ b/code/portal_detail_display.js
@@ -5,7 +5,7 @@
window.renderPortalDetails = function(guid) {
selectPortal(window.portals[guid] ? guid : null);
- if (!portalDetail.isFresh(guid)) {
+ if (guid && !portalDetail.isFresh(guid)) {
portalDetail.request(guid);
}
@@ -26,6 +26,11 @@ window.renderPortalDetails = function(guid) {
var data = portal.options.data;
var details = portalDetail.get(guid);
+ // details and data can get out of sync. if we have details, construct a matching 'data'
+ if (details) {
+ data = getPortalSummaryData(details);
+ }
+
var modDetails = details ? '
Enlightened | Resistance |
---|
Enlightened | Resistance | |||||
---|---|---|---|---|---|---|
Level '+level+' | '; if(minlvl > level) counts += 'zoom in to see portals in this level | '; else - counts += ''+window.plugin.portalcounts.PortalsEnl[level]+' | '+window.plugin.portalcounts.PortalsRes[level]+' | '; + counts += ''+self.PortalsEnl[level]+' | '+self.PortalsRes[level]+' | '; counts += '|
Total: | '+window.plugin.portalcounts.enlP+' | '+window.plugin.portalcounts.resP+' | ||||
Total: | '+self.enlP+' | '+self.resP+' | ||||
Neutral: | '; if(minlvl > 0) counts += 'zoom in to see unclaimed portals'; else - counts += window.plugin.portalcounts.neuP; - counts += ' |
No Portals in range!
'; + var total = self.enlP + self.resP + self.neuP; + var title = total + ' ' + (total == 1 ? 'portal' : 'portals'); - var total = window.plugin.portalcounts.enlP + window.plugin.portalcounts.resP + window.plugin.portalcounts.neuP; - dialog({ - html: 'Nothing to show! |
# | ' + + 'Portal Name | ' + + 'Level | ' + + 'Team | ' + + 'Health | ' + + 'Res | ' + + 'Links | ' + + 'Fields | ' + + 'AP | ' + + '
---|---|---|---|---|---|---|---|---|
'+rowNum+' | ' + + '' + window.plugin.portalslist.getPortalLink(portal, portal.guid) + ' | ' + + '' + portal.level + ' | ' + + '' + portal.team.substr(0,3) + ' | '; + + html += '' + (portal.teamN!=TEAM_NONE?portal.health+'%':'-') + ' | ' + + '' + portal.resCount + ' | ' + + '' + (portal.linkCount?portal.linkCount:'-') + ' | ' + + '' + (portal.fieldCount?portal.fieldCount:'-') + ' | '; + + var apTitle = ''; + if (PLAYER.team == portal.team) { + apTitle += 'Friendly AP:\t'+portal.ap.friendlyAp+'\n' + + '- deploy '+(8-portal.resCount)+' resonator(s)\n' + + '- upgrades/mods unknown\n'; + } + apTitle += 'Enemy AP:\t'+portal.ap.enemyAp+'\n' + + '- Destroy AP:\t'+portal.ap.destroyAp+'\n' + + '- Capture AP:\t'+portal.ap.captureAp; + + html += '' + digits(portal.ap.enemyAp) + ' | '; + + html+= '
-Many users are seeing the error message Error: Server Error when attempting to log in on mobile. -To get past this and log in successfully, you can try to -
-As far as we can tell this isn't an IITC Mobile issue - using the Chrome browser on android, which also supports -Google login, can give similar issues. Further discussion on this is happening in -github issue #497. -
-@@ -26,7 +9,7 @@ Occasionally the Niantic servers give this misleading message - what it should u "Failed to check account status - please reload to try again". IITC will, in most cases, retry for you.
-Sometimes this is caused by server issues, and no ammount of reloading will fix it. Come back later and try again. +Sometimes this is caused by server issues, and no amount of reloading will fix it. Come back later and try again.
However, another reason for this message is your account being blocked/suspended by Niantic. There diff --git a/website/page/home.php b/website/page/home.php index 3c26342d..c39dffda 100644 --- a/website/page/home.php +++ b/website/page/home.php @@ -13,7 +13,33 @@ offers many more features. It is available for
+Niantic have just released a minor update to the standard intel site. Good news - recent IITC changes have made it +successfully detect the protocol changes in most cases, so no update is needed. You may need to reload the page, +and for IITC Mobile you may need to change a cache setting. See +this G+ post for more details. +
+ ++IITC 0.16.0 and IITC Mobile 0.10.0 have been released. This update is required to work with the latest changes to +the standard intel site. This update took a fair amount of work due to major changes +in the network protocol used behind the standard intel website, hence the longer than usual delay for the update. +
++As well as IITC itself, nearly every single plugin broke in some way due to these changes. Due to the amount of work +needed to get everything possible working again, some plugins have been disabled for now. You can see the list of these +disabled plugins in the download list - they're in the 'Deleted' category with a description of 'PLUGIN CURRENTLY UNAVAILABLE'. +
++Shortly after the Niantic changes that broke IITC, there were reports of IITC users being banned. This seemed strange at +first, as IITC was not even functioning at this time, so why would people be using it and getting banned. The conclusion +that was reached was that a few people who tried to use the broken IITC Mobile app triggered either a bug in IITC that +caused excessive requests, or triggered some kind of alert in the intel servers. Changes have been made to IITC now +so this unlikely to be an issue again. +
+IITC and IITC Mobile are currently broken, due to changes made to the standard intel website. This is a major change in how @@ -36,60 +62,5 @@ More details, and discussion, available in the This is shown as version 0.15.99. When a fixed build is released, it will be 0.16.something and will update and start working. Test versions remain, but broken. Please join the Google+ Community where announcements will be made.
--IITC 0.15.0 and IITC Mobile 0.9 have just been released. This update fixes things to work with the latest changes -to the standard intel site. Also -
-IITC 0.14.6 and IITC Mobile 0.7.7.2 released. Another change needed to match a minor update to the standard intel site. -
- --IITC 0.14.5 and IITC Mobile 0.7.7.1 have been released. This contains a fix to work with the latest intel site updates. -Other than this, it is identical to the 0.14.4/0.7.7 release. -
- --IITC 0.14.4 and IITC Mobile 0.7.7 have just been released. A critical update required to work with changes made to the -standard intel site. Changes include -
-3RD PARTY PLUGIN AUTHORS: The plugin wrapper code has been modified to pass through the additional version -information. While existing plugins should continue to work, I highly recommend updating the wrapper code in your -scripts to match. -
- --IITC 0.14.3 and IITC Mobile 0.7.4 have just been released. This is a critical update required to work with the latest -changes Niantic have made to the standard intel site. Additionally, the draw-tools plugin now snaps points to portals -when creating lines/polygons/markers (was actually in 0.14.2 release), a bugfix relating to IITC not realising who -'you' are, causing some highlighters to break, and a handful of other tweaks/bugfixes. -
Older news diff --git a/website/page/mobile.php b/website/page/mobile.php index 35198d6b..7093a8bd 100644 --- a/website/page/mobile.php +++ b/website/page/mobile.php @@ -24,12 +24,11 @@ install from the link below.-IITC Mobile is still in the early stages of development. Many things do not yet work right. Major known issues are: +IITC Mobile has some known problems, major issues are:
+Niantic have just released a minor update to the standard intel site. Good news - recent IITC changes have made it +successfully detect the protocol changes in most cases, so no update is needed. You may need to reload the page, +and for IITC Mobile you may need to change a cache setting. See +this G+ post for more details. +
+ ++IITC 0.16.0 and IITC Mobile 0.10.0 have been released. This update is required to work with the latest changes to +the standard intel site. This update took a fair amount of work due to major changes +in the network protocol used behind the standard intel website, hence the longer than usual delay for the update. +
++As well as IITC itself, nearly every single plugin broke in some way due to these changes. Due to the amount of work +needed to get everything possible working again, some plugins have been disabled for now. You can see the list of these +disabled plugins in the download list - they're in the 'Deleted' category with a description of 'PLUGIN CURRENTLY UNAVAILABLE'. +
++Shortly after the Niantic changes that broke IITC, there were reports of IITC users being banned. This seemed strange at +first, as IITC was not even functioning at this time, so why would people be using it and getting banned. The conclusion +that was reached was that a few people who tried to use the broken IITC Mobile app triggered either a bug in IITC that +caused excessive requests, or triggered some kind of alert in the intel servers. Changes have been made to IITC now +so this unlikely to be an issue again. +
+IITC and IITC Mobile are currently broken, due to changes made to the standard intel website. This is a major change in how @@ -23,7 +49,6 @@ More details, and discussion, available in the This is shown as version 0.15.99. When a fixed build is released, it will be 0.16.something and will update and start working. Test versions remain, but broken. Please join the Google+ Community where announcements will be made.
-