Commit graph

6202 commits

Author SHA1 Message Date
Eric House
183b221a2e each message gets a localID so logs can show progress
And rewrite toString()
2019-06-23 10:13:31 -07:00
Eric House
156c05d54c add another DeadlockWatch (and import already) 2019-06-23 10:13:31 -07:00
Eric House
614b4d3610 put Killer back: device can receive but never process
A device where the OS isn't servicing enqueueWork() requests won't write
back to sockets it accept()s, causing the sender's writer to block
forever. So give it 30 seconds then kill the socket.
2019-06-23 10:13:31 -07:00
Eric House
9bd95d2ccf fix NPE (by inspection, from crashlytics report) 2019-06-23 10:13:31 -07:00
Eric House
e73f1b5b88 don't enqueue dupes of messages already in queue
No point in giving a spot to something the receiver will drop as a
duplicate.
2019-06-23 10:13:31 -07:00
Eric House
0133459114 update status more often (as old code did) 2019-06-23 10:13:31 -07:00
Eric House
9eef188ebe fix concurrent access exception and too-slow sends
if we successfully send, we should reset the backoff so we try again
quickly. Especially at a time when only one message is sent per connection.
2019-06-23 10:13:31 -07:00
Eric House
a8241cc085 change key to force new value
fixes what was probably a crash only for me, but....
2019-06-23 10:13:31 -07:00
Eric House
0d757c605f report invitation success even if dict download needed 2019-06-23 10:13:31 -07:00
Eric House
d907b4201c use https scheme for dict downloads 2019-06-23 10:13:31 -07:00
Eric House
9915c464af Move back to old one-msg-per-connect() model
Add support for the old protocol, and define to use it. After the next
release has been adopted and everybody can read the new protocol another
release will turn it on.
2019-06-23 10:13:31 -07:00
Eric House
31d8345e6b add not-again checkbox to BAD_BT_PROTO dialog
Won't help the old-build side of the exchange of course.
2019-06-23 10:13:31 -07:00
Eric House
341293dc55 prune only those messages successfully sent
Fix race condition that would have cleared all messages including those
added after a send began. In the process, move to storing outbound
messages individually rather than concatenated in their stream format.
2019-06-23 10:13:31 -07:00
Eric House
ff2a06592f add alert to launch app when OS not scheduling service
Set a boolean every time app's upgraded, and clear it on first launch of
MainActivity. In between, if we try to launch the BTService but the OS
doesn't schedule it, post a notification asking user to launch the app.
2019-06-23 10:13:31 -07:00
Eric House
1505a443ac exit threads when BT off; add util to report deadlocks
I've seen a deadlock in the BT stuff. Now they'll be caught and reported
via Crashlytics on DEBUG builds.
2019-06-23 10:13:31 -07:00
Eric House
e23129c0e7 always increment failure count on send failure 2019-06-23 10:13:31 -07:00
Eric House
5cb2be33d2 Rewrite BT proto to batch messages
Lots of changes. Old BT proto is no longer compatible. New one
batches messages per device and sends all on a single connection.
The queue (now a single buffer) is now a static global and the thread
that services it doesn't die (but gloms onto whatever Service instance
is most recent.) Code to pack and unpack the protocol can probably be
reused for wifi-direct or any other pass-through transport.
2019-06-23 10:13:31 -07:00
Eric House
e13d90409c replace some firing asserts with log messages
I'm getting crashes on a device with an iffy wifi connection and no SIM.
May need to look into these.
2019-06-23 10:13:31 -07:00
Eric House
997aad84ff don't open game just because it was created
Posting a notification is enough. And existing code already handles the
missing dict case, so GamesListDelegate doesn't even need to know.
2019-06-23 10:13:31 -07:00
Eric House
54fb43ec62 double scan progress time
Since the BT stuff tends to timeout late when failing, this looks better.
2019-06-23 10:13:31 -07:00
Eric House
de9b0851d5 add env to map immediately, in initGame()
I'm seeing an assertion failure in cleanup that could be explained by
the cleanup happening when initGame() has been called but no subsequent
jni method that would have added the env to the map. So let's add it
immediately so that can't happen.
2019-06-23 10:13:31 -07:00
naofum
f8537c6a88 Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-06-23 10:13:31 -07:00
Eric House
989f7524d6 unselect any game moved into a closed group
Fixes GameOver game moved via "archive" checkbox remaining selected
2019-06-23 10:12:05 -07:00
Eric House
76957fe4eb don't move selected games via context menu
Both ways of invoking move-to-group were working on the set of selected
games. Instead pass what's meant to be operated on as a parameter.
2019-06-23 10:12:05 -07:00
Eric House
682501814b put GameOver view layout into a ScrollView
When device in landscape the archive box is otherwise unreachable on a
four-player game
2019-06-23 10:12:05 -07:00
Eric House
dc1431fd08 make GamePtr AutoCloseable and use where possible 2019-06-23 10:12:05 -07:00
Eric House
c706205cd1 Make JNIThread autoclosable and use everywhere
JNIThread is somehow sticking around sometimes and holding the lock for
a game so that that game can never be opened again. On the theory that
there's some place retain() was called but not release(), use the thing
in try-with-resources wherever possible. Which is pretty much
everywhere.

Also added age to the lock-holder report being uploaded.
2019-06-23 10:12:05 -07:00
Eric House
e56770ea29 include stack of lock owner when logging failure to lock 2019-06-23 10:12:05 -07:00
Eric House
ceb68b9787 Fix NPE when url for delete game has changed
I think it's only an issue for debug builds where I've manually pointed
at a different server, but just in case.
2019-06-23 10:12:05 -07:00
Eric House
58882fe52f make text in new GameOver alert bigger
To match how it was when using the system-provided view.
2019-06-23 10:12:05 -07:00
Eric House
25509c729a report stack of lock owner to crashlytics when can't get it
I'm seeing something permanently lock a game so it can't be opened. So
add code to report the stack of the owner to Crashlytics when opening
fails 3 times in a row. It's stubbed out for non-debug builds.
2019-06-23 10:12:05 -07:00
Eric House
babca4a696 Add custom GameOver alert for GameOver with Archive checkbox
I didn't like having to re-open a game to archive it after
rematching, so now there's a checkbox that lets you archive it after
either rematching OR just using OK to dismiss the alert. Also fixed
rematch of a solo game causing new game to be created in Archive
group if that's where the source game was.

squash me
2019-06-23 10:12:05 -07:00
Eric House
0ad9b0f891 up copyright year 2019-06-23 10:12:05 -07:00
Eric House
fce0eb2acc add git rev to crashlytics reports 2019-06-23 10:12:05 -07:00
Eric House
0cd0bd4c03 plug leak 2019-06-23 10:12:05 -07:00
Eric House
2afce586a3 avoid crashes when BT turned off
Test at enqueueWork() and onHandleWorkImpl(). Seems to do it. Maybe
turning it off mid-send will still crash...
2019-06-23 10:12:05 -07:00
Eric House
601eaf395c don't create threads we won't use 2019-06-23 10:12:05 -07:00
Eric House
7ba2f92645 null listener thread ref so will be restarted
Once it died it stayed dead: bad.
2019-06-23 10:12:05 -07:00
Eric House
ef602baa18 cleanup 2019-06-23 10:12:05 -07:00
Eric House
7ccb576214 Recast BTService as a JobIntentService
Got tired of the space the forground-service notification icons were
taking. So now BT sends and receives are done via static threads and
onHandleWork(). The send thread times itself out quickly. The receive
thread doesn't yet. We'll see how long the OS lets it run and what
needs to be done to deal with that.
2019-06-23 10:12:05 -07:00
Eric House
438e134870 add debug-only option for invitee players to be robots
It's useful when testing to have the remote device play without human
interaction. So add an option, and UI to trigger it, for the players
created remotely in response to an invitation to be robots. There are
guards in place to catch the feature slipping into a release build.
2019-06-23 10:12:05 -07:00
Eric House
136fa6ac7d remove some logging 2019-06-23 10:12:05 -07:00
Eric House
842509d84a remove methods overridden just for logging
looks like I've fixed the crash I wanted to diagnose.
2019-06-23 10:12:05 -07:00
Eric House
29661d2a7e fix relay interactions again
Eliminate the writer thread, since onHandleWork() is already getting
called on a thread and can process the outbound queue itself. And get
rid of reader thread needing to wait for an instance of the RelayService
to be available to process a packet (which was taking 5-10 seconds all
the time): just post received packets via an enqueueWork() call using
the app context that's always available.
2019-06-23 10:12:05 -07:00
Eric House
34b462b97c pass context and use to post lock-failure toast 2019-06-23 10:12:05 -07:00
Eric House
888109ce4e tweak/reduce logging 2019-06-23 10:12:05 -07:00
Eric House
c4d21b7b59 move constant from XWApp to build.gradle 2019-06-23 10:12:05 -07:00
Eric House
781da8ccb6 avoid NPE (and log to root-cause it later) 2019-06-23 10:12:05 -07:00
Eric House
37085b0ba1 ensure writer gets run every time OS schedules via onHandleWork() 2019-06-23 10:12:05 -07:00
Eric House
130487f7df remove some logging 2019-06-23 10:12:05 -07:00
Eric House
122b270025 fix NPE and let GameSummary stay until replaced
GameListItem was clearing its summary when kicking off a replacement
load. Instead keep the old around in case somebody wants it (e.g. to
figure out what menus to enable) until the reload finishes.

Also add logging of how long loading takes. I think a cache might be
called for.
2019-06-23 10:12:05 -07:00
Eric House
6193c376db move invite button above button bar.
(It's more frequently used)
2019-06-23 10:12:05 -07:00
Eric House
2a5c3b11a0 add context comment for new string 2019-06-23 10:12:05 -07:00
Eric House
4ce20a49a6 cleanup via new macro 2019-06-23 10:10:49 -07:00
Eric House
1e6fdd1f70 remove logging 2019-06-23 10:10:49 -07:00
Eric House
0a50a721dd fix malformed xml string
Weblate bug?
2019-06-23 10:10:49 -07:00
Eric House
aab36efdac fix problems with RelayService
Darned thing was dropping packets, failing to connect games built in
response to invitations, and otherwise misbehaving. First was due to not
resheduling when exited with outbound packets in queue; second to not
overriding relayNoConnProc() (due to signature change.) Though it still
happens occasionally.... Also added timestamps to track how long it
takes a packet to be sent and ACK'd.
2019-06-23 10:10:00 -07:00
Eric House
0ad21783b8 add rowid to NoSuchGameException 2019-06-23 10:10:00 -07:00
Eric House
8ff23294e6 fix NPE (and tweak logging) 2019-06-23 10:10:00 -07:00
Eric House
fd122148b8 add flavor to toasted got-fcm message
So I can tell the apps apart
2019-06-23 10:10:00 -07:00
Eric House
ac5cbea83f display latest FCM receipt as part of netstats for relay 2019-06-23 10:10:00 -07:00
Eric House
c67bda8683 use a constant jobID for enqueueWork()
That each VM instance had a different id might be why I was
crashing. We'll see.
2019-06-23 10:10:00 -07:00
Eric House
b5ab8803c4 remove debug-only assert I'm seeing
Good to know it's happening; now don't crash!
2019-06-23 10:10:00 -07:00
Eric House
40eab8690b put back pref controlling whether FCM receives are Toasted 2019-06-23 10:10:00 -07:00
Eric House
272204223e make md5sum calculation available everywhere
I want to log sums to see when they arrive on relay. And also add some
missing @Overrides I noticed.
2019-06-23 10:10:00 -07:00
Eric House
f28c21206c put up toast when FCM message received
It's too useful to live without. So: tap into the static list of live
Delegates, and if any of them has an Activity available use it to run
Toast on UI thread. Otherwise there will be no display.
2019-06-23 10:10:00 -07:00
Eric House
6853b203a1 make https the default for prefs-alterable strings
And change the keys so all local changes get reset
2019-06-23 10:10:00 -07:00
Eric House
2c4ce83a5b use https everywhere. And rewrite URLs if necessary. 2019-06-23 10:10:00 -07:00
Eric House
5d36470e50 add some logging around RelayService lifecycle 2019-06-23 10:10:00 -07:00
Eric House
bbe69f6398 Revert "toward compiling with gcc8"
This reverts commit d293517e7c.
2019-06-23 10:10:00 -07:00
Eric House
e8ab9e0b8b toward compiling with gcc8
My VSIZE is no longer legal, and apparently there's no workaround (no
way to safely figure the length of an array whose size is known at
compile time.) To avoid the risk of duplicating little constants, added
macros that define length in a way a new VSIZE can pick it up. Couldn't
make that work for struct field arrays, however, so there I'm using
constants.
2019-06-23 10:10:00 -07:00
Eric House
5f9d39ef8d communicate variant to relay, and store in new column 2019-06-23 10:10:00 -07:00
Eric House
a49c8c89ba fcm config file for xw4 variant 2019-06-23 10:09:59 -07:00
Eric House
d950ad695c remove debug toast that can't work from that class 2019-06-23 10:09:59 -07:00
Eric House
0c52d4e550 remove sms permissions from play store variant
and from a new debug variant so that can be tested. Add explanation to
be shown users who try to use the now-unavailable features.
2019-06-23 10:09:59 -07:00
Eric House
6ecfd2f20b add app-side support for firebase messaging
Works for xw4d variant only so far -- xw4 builds are broken!!!
2019-06-23 10:09:00 -07:00
Eric House
305f45dfc0 add variant option to build scripts
xw4 won't build for a while...
2019-06-23 10:09:00 -07:00
WaldiS
6aad6d259b
Translated using Weblate (Polish)
Currently translated at 89.4% (683 of 764 strings)
2019-06-20 21:00:29 +02:00
WaldiS
c612570c12
Translated using Weblate (Polish)
Currently translated at 89.1% (681 of 764 strings)
2019-06-18 21:02:46 +02:00
Julio Yagami
6bf8fcef17
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-06-18 21:01:45 +02:00
AB
36927380e2
Translated using Weblate (Ukrainian)
Currently translated at 0.5% (4 of 764 strings)
2019-06-18 21:01:44 +02:00
THANOS SIOURDAKIS
800292dfee
Translated using Weblate (Greek)
Currently translated at 0.9% (7 of 764 strings)
2019-06-18 21:01:43 +02:00
WaldiS
981baed19d
Translated using Weblate (Polish)
Currently translated at 26.8% (205 of 764 strings)
2019-06-09 12:01:14 +02:00
THANOS SIOURDAKIS
d610102f26
Added translation using Weblate (Greek) 2019-06-07 19:35:25 +02:00
AB
6688ef08f7
Added translation using Weblate (Ukrainian) 2019-06-02 09:24:42 +02:00
WaldiS
0157cef8d5
Translated using Weblate (Polish)
Currently translated at 6.5% (50 of 764 strings)
2019-05-02 23:48:02 +02:00
WaldiS
e9a68ba7f3
Translated using Weblate (Polish)
Currently translated at 6.4% (49 of 764 strings)
2019-05-01 22:47:51 +02:00
WaldiS
d13d8e79cb
Translated using Weblate (Polish)
Currently translated at 2.7% (21 of 764 strings)
2019-04-12 20:03:57 +02:00
WaldiS
5e3bedc3eb
Translated using Weblate (Polish)
Currently translated at 1.8% (14 of 764 strings)
2019-03-10 18:03:01 +01:00
naofum
09affc451d
Translated using Weblate (Japanese)
Currently translated at 75.9% (580 of 764 strings)
2019-03-03 11:17:45 +01:00
Peeter Angelo
54c0443856
Translated using Weblate (Czech)
Currently translated at 14.5% (111 of 764 strings)
2019-02-19 10:10:21 +01:00
naofum
67cc88ea4e
Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-02-11 12:09:26 +01:00
João Vitor Ferreira Cavalcante
cfc9466efd
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-02-09 02:09:26 +01:00
Markus Enzenberger
7d8c013492
Translated using Weblate (German)
Currently translated at 100.0% (764 of 764 strings)
2019-02-05 10:09:17 +01:00
Mesut Akcan
8cd31b1250
Translated using Weblate (Turkish)
Currently translated at 0.8% (6 of 764 strings)
2019-01-31 14:09:09 +01:00
Mesut Akcan
c6ac53cb3f
Added translation using Weblate (Turkish) 2019-01-29 22:44:02 +01:00
ssantos
8716832999
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-01-27 10:04:36 +01:00
Hosted Weblate
e20be83a58
Merge branch 'origin/android_translate' into Weblate. 2019-01-22 09:21:13 +01:00
Allan Nordhøy
fc9d1d2346
Translated using Weblate (Norwegian Bokmål)
Currently translated at 85.7% (655 of 764 strings)
2019-01-22 09:21:12 +01:00
Allan Nordhøy
4b8f39552f
Translated using Weblate (English)
Currently translated at 100.0% (764 of 764 strings)
2019-01-22 09:21:09 +01:00
Eric House
fb5fee3483 tweak string 2019-01-21 21:48:58 -08:00
Bernard Massot
6af47f9bc2 Translated using Weblate (French)
Currently translated at 97.6% (746 of 764 strings)
2019-01-21 21:48:58 -08:00
Louies
f45e001e7a Added translation using Weblate (Chinese (Traditional)) 2019-01-21 21:48:57 -08:00
Eric House
506ddc8f7a fix logic error in permissions callback
Somehow I forgot what params were and decided that array's length needed
to match another's.
2019-01-21 20:44:16 -08:00
Eric House
06fe5894b9 fix invitations creating a second activity stack
Looks like certain launches that went through DispatchNotify could
create a second "instance" of the app. Giving that Activity a launchMode
of singleTask fixes this (singleTop does not.)
2019-01-21 18:57:38 -08:00
Eric House
51c7752830 use same launch flags for all self-launches
Launching a game in response to a wordlist it needing being downloaded
went through a different Intent-creation path from the rest, and
resulted in a second instance of the app showing in the launcher. This
shoudl fix that. I don't *think* it's the only way I'm getting second
instances or stacked GamesLists, but it should get fixed.
2019-01-21 18:57:38 -08:00
Eric House
52d983e0d8 assert (on DEBUG builds) that MainActivity is never sublaunched
I think this might help catch the instance duplication I'm seeing very
rarely.
2019-01-21 18:57:38 -08:00
Bernard Massot
41f5c6afa2
Translated using Weblate (French)
Currently translated at 97.6% (746 of 764 strings)
2019-01-20 16:19:53 +01:00
Eric House
0754e0db8e remove hard-coded assumption about apk name
So can use the thing to sign-and-install local fdroid builds
2019-01-18 17:46:02 -08:00
Eric House
837ff1f8fc Give each variant a name, and include in About alert.
I modified existing translated strings, adding the new clause. Not doing
that would cause the existing strings to be stripped because they'd no
longer have the matching set of format specifiers.
2019-01-18 16:45:27 -08:00
Eric House
f072736bb8 need to call doResume() twice
Calling it only once on acquiring lock where before it'd been called
twice meant ConnStatusHandler never got initialized. Bad.
2019-01-18 07:32:58 -08:00
Eric House
4878afb185 remove misplaced assert 2019-01-18 06:51:23 -08:00
Hosted Weblate
03b9b3e499
Merge branch 'origin/android_translate' into Weblate. 2019-01-18 13:59:52 +01:00
Eric House
ae56f23f66 remove misguided Assert that's firing 2019-01-17 15:16:54 -08:00
Eric House
026d6d5c5e Change GameLock API (should be no behavior change) 2019-01-17 12:46:51 -08:00
Eric House
f436090c6f install listeners immediately after setting them
Fix a race condition introduced by making initing jnithread be
asynchronous: all the layout that was supposed to happen after listeners
were added instead happened before, so that they weren't there to be
installed as part of layout. So now, after adding them, get them hooked
up to the UI. (The complexity of this is all historical: at some point
the listeners were getting added BEFORE there were views to attach them
to, so they were cached and added later. Probably now they could simply
be installed as part of adding them. But I'm not doing that now.)
2019-01-17 12:28:01 -08:00
Eric House
95df560a40 update changes: sms will be ripped out alas. 2019-01-17 08:51:13 -08:00
Eric House
385f98f038 check for null 2019-01-16 22:17:54 -08:00
Eric House
d94217cc06 Make Board wait a bit for lock on opening
Was seeing frequent failure to open games as JNIThread.getRetained() was
unable to get a lock without waiting. Which it can't do on UI thread. So
added a method to GameLock that takes a callback to be called when the
lock's obtained, with the actual waiting done on a local thread. Then
fixed BoardDelegate a bit to not crash while waiting for the callback.
2019-01-16 21:45:39 -08:00
Eric House
a8872df5ed cleanup: I like the call-chain style better these days 2019-01-16 20:32:44 -08:00
Eric House
20359e50da log GameLock failure only when it's a result 2019-01-16 13:24:46 -08:00
Eric House
4c9ded77bf assertion says had race condition; fix it
Use a set instead of a singleton so a late clear doesn't overwrite an
early set.
2019-01-16 11:31:54 -08:00
Eric House
a93b1da6fa up client version
Will allow to distinguish on relay what clients can receive GCM.
2019-01-16 11:14:35 -08:00
Eric House
ddf12b6523 resend all when come to foreground 2019-01-15 22:13:46 -08:00
Eric House
c611919876 check for moves when come to foreground 2019-01-15 14:34:50 -08:00
Eric House
e61d7a5629 remove GCM -- crashes when invoked from server!
Once built for SDK 26 the old GCM support code crashes as it's calling
startService() from background. Duh! Will have to bring in Firebase's
replacement at some point. For now if I'm to release it has to be
without GCM.
2019-01-15 14:18:20 -08:00
Eric House
43b979ff46 cleanup: logging and method rename 2019-01-15 12:29:45 -08:00
Eric House
cf3d3bc156 cleanup from review of diffs (nothing significant) 2019-01-15 07:44:38 -08:00
Eric House
73a469a428 make logging respect force-on preference 2019-01-14 16:58:00 -08:00
Eric House
788113ee28 up versions strings for new release 2019-01-14 13:12:39 -08:00
Eric House
c976b3f595 show BT-troubleshooting hint when scan finds no devices 2019-01-14 12:20:27 -08:00
Eric House
23e58524a1 in invite dialog, confirm before deleting BT devices 2019-01-14 12:08:07 -08:00
Eric House
0da5d9dd28 improve gcm-debug toast message 2019-01-13 21:56:59 -08:00
Louies
1328f1a9a4
Added translation using Weblate (Chinese (Traditional)) 2019-01-13 14:15:27 +01:00
Eric House
e378647e36 put back explanatory progress text 2019-01-12 09:04:40 -08:00
Eric House
bfbf17252e use ProgressBar instead of Dialog for BT invite scans
I wanted to show progress, and it was just as easy to replace the
deprecated ProgressDialog as to add a timer to the thing.
2019-01-11 21:06:15 -08:00
Eric House
bdbd5bc1ee disable logging for tagged release builds 2019-01-09 20:00:20 -08:00
Eric House
1625ec9062 Merge branch 'android_branch' into android_translate 2019-01-09 19:03:21 -08:00
Eric House
48a9e830b8 remove empty string -- not legal 2019-01-09 19:02:29 -08:00
Eric House
d2cbcf1e71 tweak BT background notification icon and expl. text
The BT icon part was too thick. And the explanation was TMI.
2019-01-09 18:57:50 -08:00
Eric House
d257369639 use same invite prefix for all variants
I want to be able to invite one app to the other's games to better test
relay. Since I'm the only one using the Dbg variant should be no impact.
2019-01-09 18:25:52 -08:00
Eric House
011825e4a9 cleanup 2019-01-09 18:18:27 -08:00
Eric House
302a3a5025 accept invite even if same-gameID game open
more dev-only code, likely: if the game that's sending the invitation is
open when the invitation arrives, should still check if it's a dupe or
should be accepted.
2019-01-09 09:51:15 -08:00
Eric House
250583caea log when invite response comes back 2019-01-08 20:34:22 -08:00
Eric House
a665df7840 cleanup: test's done already 2019-01-08 20:31:27 -08:00
Eric House
f18a957ed5 kill progress when owner view goes away
BT Invite progress was sticking around when Board left because it wasn't
foreground.
2019-01-08 20:31:27 -08:00
Eric House
2c73f4ca77 don't handle duplicate invitations in DEBUG case
Was creating a second game in some cases in response to duplicated
invitations. Add a test for forceChannel: if there's already a game with
the same gameID *and* forceChannel assume the invitation is a dupe and
drop it.
2019-01-08 20:02:01 -08:00
Eric House
e0f4a028d1 remove a bunch of unused methods 2019-01-08 19:42:44 -08:00
Eric House
24fad52cd8 use second resolution in bt device display
Useful to see that a scan really did just happen
2019-01-08 11:52:31 -08:00
Eric House
7c7b80deae add net-stats dialog to log-tap games menu
So I don't have to open a game to see e.g. how it's connecting, refactor
the network status stuff so it can be called from both board and
gameslist views. Then add new context menuitem that calls it.
2019-01-08 11:37:57 -08:00