Expand description
Other apps’ notifications on a phone (docs/android.md, “Notifications from
other apps”). Android’s listener (AppNotes.java, in a process of its own,
“:listener”) asks here, for each notification of another app, whether it
comes now or how long it waits (sioul_appnotes_decide), and, when
something moved the times (a pause ended, the hours or the choices
changed), how long what it holds waits now (sioul_appnotes_review). The
rules are sioul_core::appnotes; what reaches you when, sioul_core::attention,
with today’s slots of time for you from their file (hours::slots): Time
for you holds in this process too.
Also here, for the window: Settings ▸ Other apps (setup, change), and
the Porch’s line on what waits and what came back (porch_line). On a
computer, nothing of it runs: the listener is the phone’s.
Structs§
- Counted 🔒
- A notification Sioul holds, as the listener’s log line counts it
(
log_line): the kind of its channel, until when it waits (none, or a time past: it comes now), and why.
Constants§
- MACHINE 🔒
- The why of a text gathered because its number is one ARCEP keeps for
machines (
appnotes::why_text, “appnotes-why-machine”). - TALKS_
FILE 🔒 - The conversations let through now from the card (
release_talk), by their hashed key, with when (Unix seconds): this phone’s own file, never shared, holding no title; the listener reviews when it changes.
Functions§
- access_
here 🔒 - Whether Android lets Sioul hold other apps’ notifications here (notification access): on a phone, as Java says now; None elsewhere, or when Java cannot say (its library not loaded in this process).
- area_of 🔒
- What a notification’s source is for: the app’s, as you set it; else, for mail, the address it came to, when it is one of your accounts’ (unsaid: work).
- at_
words 🔒 - A time as the log says it: “22:00” today, “tomorrow 07:00”, else “2026-10-20 09:00”.
- by_time 🔒
- The table of other apps by time (What reaches you ▸ Exceptions): each app
seen lately a row of the matrix, by name, and the apps’ rows set that this
device has not seen (a computer’s, set on the phone: by the name written
with them); then the conversations chosen for (a row or a way through)
and the ten seen last (“Title · App”), never a wall of them. Whether
some were left out.
AttentionGrid.qmldraws it. - change 🔒
- A choice of the tab, or one of Android’s pages (
AppNotesSetup.act): the tab again, as JSON. “set” {key, value}: “hold”,app.<package>.kind,app.<package>.area,conversation.<key>,site.<host>; “open-access”, “open-info”, “open-app” {package}, “open-channel” {package, channel}; “contacts”. - changed 🔒
- When a file last changed; none when it is not there.
- column_
words 🔒 - The matrix’s columns as the log says them: their ids (“leisure”, “slot”), Free time’s “Nothing at all” when it holds (“free (nothing at all)”), and do-not-disturb with what holds it (“dnd (focus session)”, “dnd (switch)”).
- columns_
now 🔒 - What reaches you now, as the matrix reads it: the time’s column (or two, work and admin at once), then its layers, a slot of time for you and do-not-disturb (its switch or a focus session).
- decide 🔒
- One notification decided (
AppNotes.decide): {“hold”: milliseconds (0: it comes now), “why”}. What it says is read here and dropped; the ledger keeps its key hashed, its app’s and conversation’s names, and its time. Only for the apps you send to your computers, while that part of the sharing is on, its messages also go, sealed (phonemsgs::note; “shared”: a line was written, Java asks for a step soon). - gate 🔒
- Do-not-disturb’s switch or a focus session, holding now: when it ends, when that is known (a layer of the matrix), and which of them holds (for the log).
- held_
talks 🔒 - The conversations the phone holds now, for the card (ReachCard.qml): {key, title, app} each, the soonest first. Their titles come from the phone’s own ledger and go to its window alone: never shared, never on a computer (decision 16; none there, where nothing is held).
- hold_
line 🔒 - The listener’s line at a hold (docs/android.md, “In the phone’s log”):
the kind of its channel, until when it waits, or for good, and what
decided it (
appnotes::cause): its conversation’s or its app’s own row, a gathering and what gathers it, what it is for, the columns of the matrix that hold it now (do-not-disturb with what holds it). “Notes: held: messages 1 until 10:50; why: dnd (focus session).” Held again on its return at its time: “held again”. Never a name, a number, an app nor who wrote. - java 🔒
- Java’s answer to
verb(AppNotes.call); null elsewhere, or without one. - kind_of 🔒
- The kind of channel a held notification came on, as the log says it: calls, messages, mail, or other apps (an automaton’s, an app set to come at once); never its app nor who wrote.
- kind_
word 🔒 - The kind of channel a notification came on, as the log says it (
kind_of). - let_
talk_ 🔒then - “Let them through then” on a held conversation (the card; the proposal’s 3.7): the cell of what holds it now set to at once, on the person’s own row when a card or a number knows them (their card’s first), else on the conversation’s: under do-not-disturb, that layer; during work, Work and Admin together; else the time now. Said in a sentence.
- live 🔒
- The clock as it stands, kept a minute in the listener’s process: read again sooner when the pause or free time, Health, the hours or the settings change. Asked at every notification.
- log_
line 🔒 - The listener’s line in the phone’s log (
adb logcat -s sioul), at each review of what is held and at each release (docs/android.md, “Notifications from other apps”): how many notifications are held, and how many come now, by the kind of their channel; why, the matrix’s column now and its layers (“leisure + dnd (switch)”), or Always through when that let one come; when the next one comes back. Never a name, a number, an app nor a word of a message: kinds, counts and times only. At each hold, a line of its own (hold_line). - machine_
number 🔒 - Whether a sender’s number comes from a root ARCEP keeps for automated
systems (
screening::Numbers, the call screening’s data), while the call screening sends automated callers to voicemail (itsautomated). - porch_
line 🔒 - The Porch’s line on other apps (
appnotes::porch_line); “” when nothing waits nor came back lately, and on a computer (no listener there). - reachable_
until 🔒 - Reachable’s end, for the listener’s question (
Ask::reachable, Unix seconds): while it lasts, everyone not blocked comes at once (part 3). - release_
talk 🔒 - “Let it through now” on a held conversation (the card): what is held of it comes at the listener’s next review, which this file’s change brings.
- released_
talks 🔒 - review 🔒
- What Android holds for Sioul now, worked out again (
AppNotes.review): {“snooze”: [{“key”, “ms”}], “line”}, those whose time moved by more than a minute (1 s: it may come now), and the line the listener writes in the phone’s log (log_line). Marks of notifications Android no longer holds (their app took them away, or they came back unseen) are let go. - row 🔒
- A row of the tab, as
SettingRow.qmlshows it: {key, kind, label, help, value, choices}. - set 🔒
- One choice written: the app’s kind or area, a conversation’s way through, a site at once. What says “as usual” is taken out.
- setup 🔒
- Settings ▸ Other apps, as JSON (AppNotesSetup.qml): whether this is a phone, the access and its steps, the switch, the times, what rang while held, then a row for each app, conversation and site seen.
- sioul_
appnotes_ ⚠decide decide, for Java (android/main.cpp); a panic answers “null”, and the notification comes as it was sent. Given back tosioul_string_free.- sioul_
appnotes_ ⚠review review, for Java; “null” when it fails, and what is held keeps its time.- talk_
then 🔒 - Which row and which cells “Let them through then” sets for a held
conversation (
let_talk_then): the person’s own row by their card, else by their number, else the conversation’s; under do-not-disturb that layer, in a slot of time for you that one, during work Work and Admin together, else the time now. - talks_
path 🔒 - times_
in_ 🔒words - “09:00, 13:00 and 18:00”.
- who_of 🔒
- Who wrote, as your address books and lists say (
porch::Senders): none when nobody knows a name; and whether the Always through list holds them (by a number or an address, never a name, which anyone can take). - with_
line 🔒 - The Porch’s JSON with its line on other apps (
apps_line), when there is one.