Repository navigation
Releases: GuruProduction/GURUbyUnusLumen
Release list
GURU v3.32
GURU v3.32
Ottio and Agents open again
Both rooms were closing the app the moment you tapped them, with "No definition found for type". The screen loaded and the thing behind it had never been registered, so the app had nowhere to go and stopped.
Two separate faults stacked on top of each other. The app never told Koin about the two new room modules at all. And when that was added, the generator put both view models somewhere this build switches off, so the modules came out empty anyway. Neither fault showed up in a compile, which is why it reached your phone.
Both rooms now declare what they need directly, and each has a test that starts a real container and asks for the view model the way the app does. Emptying the module makes that test fail, so the fault cannot come back quietly.
Try these
Tap Ottio from the lobby. It should open and show the market rather than closing.
Tap Agents from the lobby. It should open and show your list.
Open Agents, tap New agent, fill in a name and instructions, press All tools, pick a category, leave the price empty, then press Save and publish to Ottio.
Back on the lobby, check the top block is the Portal and the three chips under it are Add room, Settings and Ottio.
GURU v3.31
GURU v3.31
Every room is its own module now
Ottio and Agents are separate modules of the app rather than packages buried inside the portal. Nothing changes on screen from that on its own, but it means a room can be moved, fixed or replaced without touching the thing it happened to sit inside, and it is the rule every future room follows.
The agent creator can finish the job
Before this, saving an agent wrote it to the phone and stopped. There was no price, no category and no way to publish, so a finished agent had nowhere to go.
Now the creator has All tools and None in one press instead of forty switches, a row of categories, a price box, and a Save and publish to Ottio button. What you set is what gets published: the price and the category travel with the submission and survive review, so a paid agent does not appear as a free one in the wrong aisle.
Unus Lumen takes a small cut of every sale. You keep the majority.
The lobby is the layout you marked
Portal is the big block at the top. Below it are three chips: Add room, Settings and Ottio. Everything else is in the ruled list under ALL ROOMS, in the order you have dragged it.
Add room asks for a name and creates the room straight away, so it appears on the page. You fill it in by talking to GURU afterwards.
The old behaviour ranked rooms by how busy they were, which meant a stack of skills could take the top block and push the Portal, which is home, off the page. That cannot happen now.
Try these
Open Agents, tap New agent, fill in a name and instructions, press All tools, pick a category, type a price, then press Save and publish to Ottio. You should get a sentence telling you it is waiting for review.
Go back to the lobby. You should see Portal as the big block and Add room, Settings and Ottio as the three chips. Tap Add room, type a name, press Create, and the room should appear in the list below.
Open Ottio from the lobby. The masthead should say OTTIO, and each agent's category tag should read something like CODE or MEMORY rather than BUILTIN or COMMUNITY.
Not done yet
Ottio is still a market for agents only. It is not yet the place where people sell their own data on their own terms, or where they sell toolkits, skills, masks, games, apps and whole rooms. That is the next piece of work.
The rest of the rooms still live inside the portal module and each needs the same extraction.
GURU v3.30
GURU v3.30
The market is a real market now
The Marketplace door on the Agents room used to open a column of rounded cards with a name, a tool list and a grey line telling you whether you already had it. Nothing on that screen answered what a market exists to answer, so the market is rebuilt as a shop front.
Every product block now carries its category, whether it is built in or published by somebody else, how many tools it may use, who made it with their initials and an OFFICIAL or VERIFIED stamp, and a price band reading FREE or the price with Get it, Buy or In your agents.
A search box, four filters (All, Free, Paid, Owned) and a strip of category counts sit above the list, so you can find one without scrolling forty.
Tapping a product opens it in full over the list rather than on a new page, so going back returns you to where you were. The detail shows the real install count, the real rating average, the maker, the version, the tools it may use and what people said about it.
Where a number does not exist, it stays absent
An agent nobody has rated shows a dash, never zero stars. A market that could not be reached gets its own screen saying it could not be reached, which is a different fact from a market with nothing in it. A paid agent refuses to add itself while payments are not switched on, and says the price is real and the payment is not.
The agents explanation stops running off the screen
The intro panel had no height ceiling, so on a phone with a status bar and a gesture strip the heading and the GOT IT button could both end up outside the visible area, with no way to close it. It now has a fixed head and a fixed GOT IT foot, and only the explanation between them scrolls.
Try these
Open Agents, then tap Marketplace. You should see products with a price band, a maker and a category, and the search box and filters should narrow the list as you type.
Tap any product. The sheet should open over the list, show its real numbers or a dash where there are none, and close back to the same scroll position.
Open Agents and tap What is an agent?. The GOT IT button should be on screen the whole time without scrolling.
GURU v3.29
GURU 3.29
Launching an app on a television works now, on the Roku and on the Fire TV.
What was wrong
GURU asked every device the same question about where its app list lives, at one fixed address, and no television on this network answers it there. So every attempt came back as "not found", and GURU then told you the set did not support app launching. Both sets support it fine. GURU was knocking on a door that does not exist and blaming the house.
A second fault sat behind it: when a set did answer, GURU treated any accepted request as a successful launch. Starting an app and merely accepting a request are different answers from the set, and only one of them means the app opened.
What changed
GURU now asks each device where its own app list lives, using the address the device publishes, and tries the addresses real televisions use before giving up. It also separates "the app started" from "the set accepted the request but started nothing", so a launch that did nothing no longer reads as a launch.
The same fix covers every device that speaks this protocol, including set-top boxes.
An app list that was never read is now reported as unread, instead of being shown as a device with no apps installed.
Install
Download guru-v3.29-release.apk and install it over the existing GURU. The signing key is unchanged, so it installs over the current build without uninstalling.
SHA-256: ae018115037326ed362d6565a67bfcf71c7980cf83ec1533f972ec23bb31d675
Then test it
Update GURU, then paste this into the chat, naming a set you have:
launch netflix on the Roku
A good answer says the set started Netflix and that the request returned 201. A set that refuses now tells you its own reason. If it says the request was accepted but nothing started, that is the honest new answer and it means the app is not installed on that set.
GURU v3.28
GURU 3.28
The app opens again. The crash was not a leak and not a runaway loop: it was a 37 megabyte bitmap decoded to draw something almost invisible.
What was wrong
The house logo is 4224 by 2304 pixels. Decoded into memory that is 37.1 megabytes. Three screens drew it with a call that decodes an image at its full size and only then scales it down for the screen, so:
- the onboarding top bar allocated all 37.1 MB to paint a strip 18 pixels tall
- the portal watermark allocated it again to draw itself faintly at 15% opacity
- the onboarding background wordmark allocated it a third time at 6% opacity
Once that was gone the next allocation failed whatever its size, which is why the crash reported a 288 byte allocation failing with 263 kilobytes left. Nothing was trying to allocate anything large. The heap was already spent.
What changed
Images are now decoded at the size they are drawn, with a hard ceiling of four megabytes for decorative artwork. The logo costs 2.3 MB as the portal watermark and 0.6 MB as the top bar wordmark, against 37.1 MB each before. The artwork itself is untouched.
A second fault found while tracing it: several network tools read a device's reply with no limit, so one device sending a large response could fill the heap on its own. Those reads now stop at a fixed ceiling while reading rather than truncating afterwards.
Install
Download guru-v3.28-release.apk and install it over the existing GURU. The signing key is unchanged, so it installs over the current build without uninstalling.
SHA-256: f7009ffcca7647c7624262c6ec6b9965adc327ef6ea0f1e6019913ef089cdb8a
Then test it
Update GURU and open it. A good result is the app opening normally and the lobby appearing.
Worth a look while you are there: the portal watermark and the onboarding wordmark should look exactly as they did, just as sharp, because the decode now matches the size they are shown at.
GURU v3.27
GURU 3.27 (52)
You can get back out of a room, and every room now looks like the lobby.
The back door
There was no way out of a room except the system gesture. On a phone with gesture navigation that gesture is invisible, so a room was a one-way trip with no obvious exit.
Every room now has a BACK door in the top left, drawn as a printed block. The lobby and the portal do not have one, because both are home.
Every room wears the lobby's masthead
The old app bar was a grey strip with a small bold title, which made every room read as a settings page that happened to share your background with the lobby.
Now a room opens the same way the lobby does: the door on the left, a stamp in the corner with one useful fact, the room's name in Archivo Black, and the same ink rule under it. All twenty rooms moved at once, because they all draw through one app bar.
The agents room
Rebuilt on that frame. Rounded cream cards became ruled rows with a flat colour swatch and the tool count, the grey switches became flat ink switches, and the black bands between groups match the lobby.
Two layout faults went with it. The two buttons and the plus used to float over the bottom corner, where they covered the last agent and clipped their own labels. They are part of the page now, so nothing sits on anything.
Test these
The way out. Open any room from the lobby, then tap BACK top left. It should return you to the lobby. Try it from three or four rooms, including the marketplace and settings.
The look. Open a few rooms in a row. Each should open with its name in the big black type and a rule under it, the same way the lobby does, with the door top left.
The agents room. Open Agents. You should see ruled rows with a colour square, the agent's name and how many tools it has, and a black switch that fills when on. The buttons should sit in the page rather than floating over the list.
Also in this build: everything from 3.25 and 3.26, including the agents intro panel, GURU reaching the agent catalogue, the Fire TV identification, and the GitHub search fix.
Verified before this build
48 suites and 520 tests in the data module, 3 suites and 30 tests in the domain module, zero failures. The release builds and verifies under all three signature schemes.
Not verified
The look of every room is the release test. Only the agents room and the shared frame were rebuilt in this pass; the rest of the rooms inherit the new masthead and door but their own content is still the old layout, and that is the next piece of work.
APK SHA-256: 41ad6d80e66c9bb93b4f6aa71078121c2edd3a1886c2ceb62c15b0d9351f3f91
GURU v3.26
GURU 3.26
Roku control works now. The set was refusing every keypress because one required header was never sent, and the tool invented a reason for that refusal instead of reading the one the set gave.
What was wrong
GURU's HTTP layer drops the Origin header without telling anyone, so a header written in the source never left the phone. Roku OS 15.3.4 refuses a request without it and answers with the explanation Origin is not allowed access, which GURU never read because the body of a failed request was thrown away.
The tool then described that refusal as a set in deep standby and suggested waking it. The set was awake the whole time, serving its own pages, so that advice was a dead end.
What changed
Keypresses and app launches now carry the origin the set requires, and are sent over a path that can carry any header the platform reserves.
A refusal is now reported as the set's own answer, quoting what it said. Standby is mentioned only when nothing answered at all, because that is the only case where it is true.
The same fix covers DIAL launches on every device that speaks DIAL, so a Fire TV refusal now arrives with the set's own words too.
Install
Download guru-v3.26-release.apk and install it over the existing GURU. The signing key is unchanged, so it installs over the current build without uninstalling.
SHA-256: 720083483818a1a264f91e7fb5ae8337ef5f262c16908b4569d40df9581579c1
Then test it
Update GURU, then paste this into the chat:
find the televisions on my network
Then press a button on the Roku:
press home on the Roku
A good answer says the Roku accepted the keypress. If the set still refuses, the reply now quotes the set's own reason instead of blaming standby, which tells us exactly what it wants.
GURU v3.25
GURU 3.25 (50)
The agents room now explains itself, GURU can reach the agent catalogue, and the television scan stops throwing away what it found.
The agents room
First time you open it, a panel says what an agent actually is: a mini GURU you send off with written instructions to do a side job on its own. It does the digging and reports back, so your main chat stays clean.
You can run one yourself, or GURU can call one mid conversation and manage it live while it works. Agents can share the session context they were sent from, so a job that depends on what you were just talking about still lands properly. GURU double checks what comes back, because an agent can be wrong.
The panel appears once and stays out of the way after that. There is a "What is an agent?" button if you want it again.
GURU can now reach the catalogue
Before this, GURU's agent tools only saw agents already on your phone, so an agent that existed but was not installed was invisible to it. It can now browse what is published, read one in full before you add it, and install it. Installing keeps the exact tools the agent shipped with, because that is the version that was reviewed.
Television discovery
A set that was found but could not be driven was being reported as a sentence instead of a device, so the location was lost. It now comes back as a device with the reason attached.
An Amazon Fire TV was being called an Android TV because both open port 8009. It is now identified from its own manufacturer and model, and it can be driven over DIAL, so "put Netflix on" reaches it.
GitHub search
A search with a repo qualifier plus a second word, like repo:owner/name bug, returned HTTP 422 every time. The query was being encoded twice. It works now.
Test these
The agents intro. Open the Agents room. You should get the panel once. Dismiss it, leave, come back, and it should stay gone until you press "What is an agent?".
Television discovery. Switch a set on and ask GURU to find the televisions on your network. If it finds the Fire TV, the make should say Amazon rather than Android TV.
GitHub search. Ask GURU to search the GURU repo for an issue containing a word, for example search the GURU issues for "telly". It should return results rather than an error.
Verified before this build
46 suites and 500 tests in the data module, 3 suites and 30 tests in the domain module, zero failures. The release builds and verifies under all three signature schemes.
Not verified
None of this has been used on a phone. The intro panel is a visual surface, so whether it looks right is your call.
APK SHA-256: c02cc9b262a3de6ca35f6d9bf89ecffcaef00f31814ec18258c9e5ab079282d3
GURU v3.24
GURU v3.24
The crash is fixed
The app was being killed while scanning the network, with the phone reporting it had run out of memory on an allocation of a few hundred bytes.
The cause was television discovery. The port sweep now covers every port on the network, which is right, but for every open port it found it asked the device to name itself, and that read the entire reply into memory with no ceiling. A single device streaming a large file, a media server or a NAS on the same network, was enough to fill the app's memory and kill it mid-scan.
Two things changed. Those identifying reads now stop at 64 KB, which is far more than a device description needs. And discovery only asks the handful of ports a television actually names itself on, instead of asking every open port on the host.
The full port sweep is untouched. All 65535 ports are still probed on every live host, so coverage is exactly what it was.
What to expect on the phone
Ask GURU to find the televisions on your network. It should scan for as long as it needs and answer without the app dying. If it still closes, that is a different fault and I want the trace.
The background you set is unchanged, and everything from the last few builds is still there.
GURU v3.23
GURU 3.23 (48)
This build fixes the install. If 3.22 told you the package was invalid, use this one.
The APK was signed with only one signature scheme, the modern v2 block. That is valid on paper, but it left nothing to fall back on: if an installer rejected that one block there was no older signature to try, so it reported the whole package as invalid. This build carries all three, v1, v2 and v3, so any installer on any Android version finds a signature it understands.
Everything from 3.22 is in it, including the television scan that now sweeps every port on every live host and shows you what it is finding while it runs.
Test the scan with:
find the televisions on my network
You should see it list both sets on your network, and you should see it working as it goes.
The APK is signed with the same certificate as every GURU release before it, so it installs straight over your existing copy.
Redacted 2026-11-01: this body originally named the two sets' LAN addresses. This repository is public; addresses removed, nothing else changed.