Skip to content

Releases: chezgoulet/phonon

Phonon 0.2.2

Choose a tag to compare

@github-actions github-actions released this 20 Oct 21:19
462f7fa

Fixes the launcher icon. 0.2.1 shipped a different mark — three squares in the wrong arrangement with a square node — while the app itself drew the BENCH mark. The icon is now generated from the same coordinates as the logo: open square, round lamp, on the CORE ground.

Phonon 0.2.1

Choose a tag to compare

@github-actions github-actions released this 20 Oct 15:29

0.2.1 — supervisor hardening (and a correction to what 0.2.1 first claimed)

What changed

Before launching a server, the supervisor now kills any libllama-server.so
process running as this app that it did not start, and logs each reaped pid. An
in-place update kills the app but not its child; that child keeps the backend
port and the next one cannot bind.

Correction

The release note first attributed a "stuck on STARTING" report to that bug. That
was wrong: the port was held by a side-by-side test build (org.phononai.app.test)
installed on the same phone during development, not by an orphan of this app.
With the test package removed, 0.2.1 starts and serves normally.

The hardening above is still a real edge case on the update path, so it stays —
but it did not fix the symptom it was written for, and it should not be read as
having done so.

Verified

Installed over 0.1.18 on the Pixel 7 with its data intact; /health reports
ready, the Serve screen shows green SERVING and the mark animating.

Phonon 0.2.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 15:16

A new identity, and three things that make the node easier to live with.

  • CORE: a thermal-readout look — hard edges, condensed display type, light and dark
    following the system, the BENCH mark as the logo and the launcher icon.
  • The mark is alive: it draws the bus, runs a packet along the traces and turns its
    corners; green means serving, amber means paused on heat, red means a fault.
  • Home Assistant: the built-in Ollama integration now finds this node — a conversation
    agent and Assist, with no extra software to install.
  • Battery: a charging-limit card that opens the system screen, confirms the state, and
    reports hours spent above 80% this week.
  • Gateway: optional one-switch LiteLLM registration with the key encrypted on the device.
  • Model downloads: memory pressure now warns with the numbers and lets you continue,
    instead of refusing the download outright.

Phonon 0.1.18

Choose a tag to compare

@github-actions github-actions released this 19 Oct 03:27

One more source of drift removed: the engine's build number was derived from
git, and a shallow submodule has no tags, so two machines disagreed — one
reported b1, the other b11716. It is now pinned to the revision we ship.

With that, the APK we publish is byte-identical to a rebuild from the same tag
on a different machine, not just to a second build on the same one.

Phonon 0.1.17

Choose a tag to compare

@github-actions github-actions released this 19 Oct 03:08

The build is now reproducible: two clean checkouts, built at different paths,
produce the same APK byte for byte. That is what lets anyone check that the
binary matches the source, and what F-Droid needs to publish it.

Getting there removed four sources of drift — absolute build paths in the debug
info, the linker build-id, and the engine's browser UI, which was fetched and
gzipped during the build. The engine now ships without that UI; the phone
serves the API the app exposes, and the build no longer needs the network.

Phonon 0.1.16

Choose a tag to compare

@github-actions github-actions released this 19 Oct 01:29

Bug reports now carry the engine and template they ran on.

The device report and /health name the llama.cpp revision compiled into the
build — read from the pinned submodule at build time, not typed into a file —
and the chat-template identity: jinja, using the model's own template, with no
custom template file in play. Settings shows the same line, so "tool calls broke"
can be triaged without guessing which engine produced it.

Phonon 0.1.15

Choose a tag to compare

@github-actions github-actions released this 19 Oct 00:50

Measurement release: no app behaviour changes.

The reference Pixel 7 now has a full profile on this build: sustained decode
10.54 tok/s over 38 generations (fifteen minutes), burst 14.01, recovery 14.33,
and one agent-shaped turn — 2,251 prompt tokens plus 128 generated — in 29.0 s
with a 2,667 MB peak resident set. The device is listed as supported because it
now has the sustained run that status requires.

Phonon 0.1.14

Choose a tag to compare

@github-actions github-actions released this 19 Oct 00:02

The model catalog is now a data file the project site reads, so the page's model
list, licences and measurements come from the repository at the release tag
instead of being hand-copied.

Releases now carry a SHA256SUMS file beside the APK, and the release workflow
asks the site to rebuild as its last, best-effort step.

No app behaviour changes in this release.

Phonon 0.1.13

Choose a tag to compare

@github-actions github-actions released this 18 Oct 23:16

Phones can now be reported back, and two settings stop being guesses.

'Contribute this phone' produces a devices/.yaml snippet from what the app
actually detected — layout, frequencies, CPU features, RAM, thermal source, and
the measured tuning profile if one exists — and adds the same block to the device
report. The device report is how a bug report arrives with evidence.

Keep-warm is measured rather than fixed: the app watches whether the first request
after an idle period is still fast and adapts the interval, within 15-300 s,
storing it in the per-SoC profile. Context is sized to the phone's available
memory on first run instead of coming from a table, and a context you set yourself
is never overridden.

The native build accepts an opt-in OpenCL backend (PHONON_OPENCL=1) for Adreno
GPUs. It is off by default, is expected to help prefill only on Adreno, and has
not been tested on one; the app says exactly that where it is shown.

Phonon 0.1.12

Choose a tag to compare

@github-actions github-actions released this 18 Oct 22:55

The app can now measure instead of guessing, and it can say what it found.

'Tune this phone' in Settings runs a short sweep: three decode configurations and
two prefill thread counts through the app's own endpoint, keeps the best of each,
saves a profile keyed by the phone's SoC, and restarts the server with it. The
profile records the llama.cpp revision it was measured against, so an engine
update discards it instead of applying stale tuning. The sweep is manual, takes a
couple of minutes, and never changes the chosen model.

Settings also gains vendor guidance: background-restriction behaviour for the
phone's manufacturer, with a link to the right settings screen where a known
intent exists and a link to dontkillmyapp.com, and a warning when the phone has
been held at 100% on the charger for more than four hours.