Skip to content

apple-v1.2.0

Latest

Choose a tag to compare

@mainocean mainocean released this 17 Sep 20:29
· 3 commits to main since this release
7ac9cbe

apple-v1.2.0 — The interviewer speaks, and Resume Review arrives

apple-v1.1.0 brought the design system, the EN/UA toggle and a real navigation
stack, but left the app with a mute interviewer and three usable screens. This
release fixes the first and adds a fourth.

Both platform builds are attached below: an ad-hoc signed macOS .zip and an
unsigned iOS .ipa for sideloading.


The interviewer has a voice

Until now the persona on screen never said anything — Core/AudioVideo/ had a
speech recognizer and no synthesizer. The Rive avatar was mute for the same
reason: its rig takes a speak input, and nothing was driving it.

  • Each persona speaks in its own gender's voice, resolved through
    AVSpeechSynthesisVoice.gender rather than guessed from voice names. Marcus
    and David deliberately share one voice, as they do on Android.
  • The same persona sounds the same every launch. speechVoices() promises
    no particular order, so "the first male voice" could differ between runs;
    candidates are ranked by quality and then by identifier, which makes the
    choice a function of what is installed rather than of luck.
  • It speaks the language you picked in the app, not the system language. A
    mid-interview switch to Ukrainian reaches the very next reply.
  • The avatar's mouth now follows the audio. It used to follow token
    generation, which meant it moved while the model was thinking and went still
    exactly when the interviewer started talking.
  • The interviewer stops when you start. Tapping the mic cuts the reply off,
    so its own voice does not land in an open microphone; leaving the session
    stops it too, rather than letting it talk over the screen you left for.

If your device has no voice for the language

A missing Ukrainian voice is the normal case on a fresh device rather than an
edge case, so the app says so instead of going quiet: an on-call banner names
the language and points at Settings → Accessibility → Spoken Content
(System Settings → Accessibility → Spoken Content → System Voice on macOS).
Install a voice there and the interviewer speaks on the next reply.

Resume Review

The fourth screen, ported from Android — paste your resume text and get a score
out of 100 with a nine-point checklist.

  • Nothing leaves the device. It is deterministic text analysis, not a model
    call: the same nine rules, thresholds and patterns the Android and web apps
    use.
  • It reads Ukrainian resumes properly. Section headings match in either
    language at once, because a Ukrainian DevOps resume routinely keeps "Skills"
    and "Experience" in English; the buzzword list and the "1 років" grammar check
    are per-language. Translating the labels over English-only logic would have
    scored good Ukrainian resumes at 20%.
  • The sample resume is deliberately imperfect — it trips the grammar check, so
    the checklist visibly finds something instead of scoring 100% and teaching you
    nothing.

Unlike Android, the nav pill carries no PRO chip: the paid tier does not exist
on this platform yet, and a lock over a screen that opens for everyone would be
misleading in the other direction.

Build

  • The build-llama-backend CI job had been failing on every pull request. It
    fetched the llama.cpp xcframework from /releases/latest, and upstream
    published a stable tag whose only asset is a text file — the actual builds are
    prerelease bNNNNN tags, which latest skips by definition. It now walks the
    release list and takes the newest release that actually carries the asset,
    which also steps over the top few whose binaries are still uploading.

Known limitations

  • Nobody has heard the voice yet. This release was written and built without
    an Apple device on hand; CI compiles all three targets green, but that proves
    the code builds, not that the four personas sound right. If a persona sounds
    wrong, or Ukrainian stays silent with a voice installed, that is worth
    reporting.
  • Still four screens of nine. Practice & quiz, History, the five-stage
    hiring pipeline and the Pro screens remain Android-only for now.
  • The iOS build is unsigned and needs sideloading (Sideloadly/AltStore); the
    macOS build is ad-hoc signed, so xattr -cr may be needed before the first
    launch.