Skip to content

Releases: JoeCorrell/Loki

Loki 1.4.0

Choose a tag to compare

@JoeCorrell JoeCorrell released this 11 Aug 04:31

A dual-screen launcher for the AYN Thor.

Install

Download Loki-1.4.0.apk and install it on the device.

Films & TV and PC streaming ship inside the app but stay switched off
until you ask for them — until then there is no section in the bar, no settings
category and no pages. To turn one on, download movies.json or stream.json
below, then open Settings → System → Extensions and import it.

Those files are not licence keys. Each is three lines of JSON you could type
yourself; only the extension field is read.

The file explorer reaches the network

Windows shares and NAS boxes, browsed from the explorer and copied to and from
like anything else. Settings → System → Network shares, then a server
appears in the explorer's sidebar under your own storage.

Servers are found rather than typed. Press Scan the network and three
probes run at once, because no single one reaches every network:

  • a sweep of port 445 across your subnet, which needs nothing of the network
    but the ability to open a connection — no multicast, no broadcast, no service
    advertising;
  • mDNS, which is what a NAS advertises and where real names come from;
  • a NetBIOS query sent to each address found, which is how a Windows machine
    says its name without a broadcast that a router can filter.

Typing an address is still there, for a server on another subnet or a network
that blocks discovery.

Everything the explorer does works across the boundary. Cut a folder on the SD
card, walk into the share, paste — copy, move, zip, extract and delete are
written once against a storage interface, so local to share, share to local and
share to share are all the same code. A move within one share is a rename on
the server rather than a round trip through the device.

Some deliberate choices:

  • Passwords are stored encrypted with the rest of your settings, alongside
    the ScreenScraper and debrid credentials. The alternative — Android's hardware
    keystore — is stronger against someone holding an unlocked device, and costs
    you every password the first time you restore a backup or move device.
  • A share is not scanned for games. The explorer browses it; the library
    scanner does not. Emulators need a real file path, so playing a ROM off a NAS
    means copying it over first.
  • A file on a share cannot be handed to another app. Android has no way to
    lend one a stream held over SMB, so the explorer says to copy it first rather
    than failing with a provider error nobody can act on.

Trakt

Settings → Films & shows → Trakt. A record of what you have watched that
belongs to you rather than to any one player: the launcher's own
continue-watching shelf stops at the edge of this handheld, so an evening that
started on a television is invisible to it.

Signing in needs no typing. Loki shows a short code; you enter it on your
phone. A handheld has no address bar and its text entry is a pad-driven
keyboard, so nothing sensitive should be typed on it — and the code is worthless
to anyone who does not also hold the account.

Connected, two shelves appear above the catalogue in Films & shows — what you
are part-way through, and your watchlist — and what you play is marked watched
on Trakt as you watch it. Both are switches, so wanting one without the other
does not mean choosing between both and neither.

Trakt is fetched after the catalogue rather than with it. Awaited together, a
slow or rate-limited account service would mean opening the section to nothing
at all: the shelves everybody gets held up by the shelves only you have.

AllDebrid

A third debrid service beside Real-Debrid and TorBox, chosen the same way in
Settings → Films & shows → Sources & accounts.

One difference is worth knowing. AllDebrid withdrew its instant-availability
endpoint, so it will not say what it has cached until a magnet is uploaded —
which means "only instantly playable sources" has no effect with that
account selected, and the switch says so rather than appearing to be ignored.
Little is lost in practice: a source AllDebrid already holds still starts
instantly, because that is what cached means. What goes is knowing which one
will before you press it.

Fixes

  • The explorer's "cannot paste a folder into itself" guard was not guarding.
    It compared a /-separated prefix against paths spelled with \. It is a walk
    up the destination's parents comparing identities now, which also catches
    /sdcard/X against /storage/emulated/0/X — one folder written two ways.
  • The sidebar highlight could never match a share, so the rail never lit while
    you were inside one.
  • The sidebar now names its sections, and says where network shares come from
    when you have none.

Platform artwork by GiuPhoenix.

Loki 1.3.0

Choose a tag to compare

@JoeCorrell JoeCorrell released this 10 Aug 21:04

A dual-screen launcher for the AYN Thor.

Install

Download Loki-1.3.0.apk and install it on the device. On first run Loki
asks to be made the default launcher and offers a short walkthrough.

Movies & TV and PC streaming ship inside the app but stay switched off
until you ask for them — until then there is no section in the bar, no settings
category and no pages. To turn one on, download movies.json or stream.json
below, then open Settings → System → Extensions and import it.

Those files are not licence keys. Each is three lines of JSON you could type
yourself; only the extension field is read. They are a way of saying "I want
this part", and nothing checks them.

A file explorer

Reachable from Start → Files, and it uses both screens: the listing on the
top panel, the description of whatever the cursor is on plus every verb that
acts on it on the panel you are holding.

Open, mark, select all, cut, copy, paste, rename, new folder, zip, extract,
delete and sort. Marks survive walking into another folder — ticking a file,
going where it belongs and moving it there is the reason to tick anything — and
because that makes it possible to delete a set you cannot see, the count of what
is out of sight is shown wherever the marks are and again on the confirmation.

Some deliberate choices:

  • Deleting is permanent. Android gives an app no shared wastebasket, and a
    private one would consume your storage while claiming to have freed it. The
    confirmation says so.
  • Nothing is ever written over. A paste onto a name that already exists
    becomes Name (2).
  • Copy progress is counted in bytes, not files, so a folder holding one disc
    image and four hundred saves does not sit at "nearly done" for the whole
    operation.
  • A move within one volume is a rename, which is instant.
  • Extraction refuses an archive whose entries point outside their folder.
    ../ in a zip is a real attack, and the whole extraction is refused rather
    than the bad entry skipped.

It needs all-files access, which Android keeps behind a switch of its own. Loki
asks for it from the explorer and explains why it is empty until you grant it.

Metadata is ScreenScraper's now

ScreenScraper leads the merge and owns the artwork and the synopsis. It
identifies a ROM by its CRC, MD5 and SHA1 rather than by its name, and when a
file's hashes and filename are both unknown to it the title is searched for
instead — so a library named the way people actually name things still matches.

SteamGridDB supplies the square cell icon, which is the one thing ScreenScraper
has no asset for. Wikidata fills gaps and needs no account at all.

ArtScraper, RAWG and IGDB have been removed. Each covered something
ScreenScraper could not while it was ranked below them, and every one was a
network round trip per game per scrape spent to be ignored. One thing went with
them: nothing now supplies a time-to-beat figure.

Existing installs are migrated on first launch. Your ScreenScraper account is
kept.

Fixes

  • Choosing a backdrop for a platform no longer deletes its icon.
  • Platform folders and cards no longer borrow a game's artwork — their image
    comes from an icon pack or from one you chose, and otherwise from nothing.
  • Game icons scraped as cartridge and disc photographs are cleared by a
    re-scrape instead of being kept forever.
  • The game panel shows the square icon where there is one, with the frame
    following the picture rather than cropping it.
  • A scrape running in the background now says so on the top screen, with a
    count.

To pick up the artwork fixes on a library you have already scraped, turn off
"Only fill in missing data" in Settings → Metadata and run a full pass. A top-up
deliberately leaves stored images alone.

Platform artwork by GiuPhoenix.