VoiceDebrief iOS / design / identity

The visual identity: one family, two apps

How VoiceDebrief and SGit Vaults look, and why: colour, type, spacing, corners, the marks, the icons and the pictures. Decided on 14 November 2026 after the owner asked for "a very strong visual identity" and "icons for everything". The design says how the apps behave; this page says how they look. Everything here is in the code: Sources/UI/Design/ in each app, and tools/art/ for every picture.

The family: two marks on the same navy ground

Five decisions

Decision
GroundA deep navy, #0B1B2B, is the family's ground: the app icons, the drawings, the hero banners. The screens themselves stay in Apple's system colours, light and dark
One accent per appVoiceDebrief is signal green, #0E9E72. SGit Vaults is indigo, #4F5BD5. Indigo means a vault in both apps, so the Vaults section of VoiceDebrief is indigo too
Colour carries meaningRed only for recording and failure. Amber only for something degraded. Every section has one colour, used for its icon, its tile and its picture, and nothing else
One symbol per thingEvery section, action and state has one SF Symbol, kept in one file (Icons.swift, and Sections.swift for sections), so the same thing looks the same everywhere
A picture per sectionEach part of the app has a drawing in the house style: on the home screen's tiles, as a banner where a section begins, in empty states. No picture contains words, and none shows something the app does not do

Colour

TokenLightDarkUsed for
DS.Palette.navy#0B1B2B#0B1B2BThe family ground: icons, drawings, banners
DS.Palette.green#0E9E72#12C08AVoiceDebrief's accent; the record control; saved and done
DS.Palette.mint#9FD8C4#9FD8C4Highlights in drawings
DS.Palette.indigo#4F5BD5#7C86F0SGit Vaults' accent; anything to do with a vault, in both apps
DS.Palette.amber#B98500#F0B429Degraded: worked, but not fully
DS.Palette.red#D93A3F#FF6B6BRecording and failure only
DS.Palette.hairlineprimary at 9%primary at 9%The edge of a card. There are no shadows on screens

The accent colours are the asset catalogues' AccentColor, so every system control takes them without code.

Sections: one colour, one symbol, one picture

VoiceDebrief's parts, in the order of the sidebar. The tab bar, the sidebar, the home screen's tiles and each section's banner all read from RootTab in Sources/UI/Design/Sections.swift, so they cannot disagree.

PictureSectionSymbolColourThe tile's line
RecordRecordmic.fill#0E9E72A voice note in, a transcript and a debrief out
LibraryLibrarytray.full#2F80EDEvery note, by day
ContactsContactsperson.2#E5577EWho notes go to; add one by QR code
VaultsVaultslock.shield#4F5BD5Encrypted copies that you own
AgentsAgentsperson.3#C94FD6Who is working for you; talk to them
PlayPlaygamecontroller#F28C28Games played by voice, on Apple's model
GuideGuidebook#2BA3D9What is new, every idea, how things work
IdentityIdentityperson.badge.key#8E5CF7Your keys and your devices
CreditCreditsterlingsign.circle#D4A12AWhat each thing costs
Your activityYour activitychart.bar#F08A4BWhat you have used; send it
LabLabflask#13A8C8Try Apple's model, tools on and off
Your wordsYour wordscharacter.book.closed#2BB39ANames the clean text should know
What this build doesWhat this build doeschecklist#12C08ABuilt, in test, not built
SettingsSettingsgearshape#8A9BB0Language, saving, diagnostics

SGit Vaults' parts, from SGSection in its own Sections.swift:

PictureSectionSymbolColour
VaultsVaultslock.shield#4F5BD5
GalleryGallerysquare.grid.2x2#E07A3F
ShareSharelink#E5577E
HistoryHistoryclock.arrow.circlepath#13A8C8
SettingsSettingsgearshape#8A9BB0

Actions and states

From Icons.swift, the same in both apps.

MeaningSymbolMeaningSymbol
Recordmic.fillDonecheckmark.circle.fill
FinishcheckmarkWorkingclock.arrow.circlepath
Sharesquare.and.arrow.upDegradedexclamationmark.triangle.fill (amber)
Save to a vaultlock.shieldFailedxmark.octagon.fill (red)
Sendpaperplane.fillIn a vaultlock.shield.fill (indigo)
DiscardtrashSentpaperplane.circle.fill
Try againarrow.clockwiseOn this deviceiphone
Scan a QR codeqrcode.viewfinderA notewaveform
LanguageglobeWhat is newsparkles

A state is shown as a StatusPill: the symbol and a word or two in the state's colour, on a 12% wash of it. Never colour alone.

Avatars: who is who

Every person and every agent has a face, so that "if I want to talk to the conductor, I should very easily see who they are" (the owner, 14 November 2026). An avatar is a photo where one is set (on the device only, never sent), else a character generated from a stable id: a key fingerprint for a person, an agent's id, or the owner's own key. The same id draws the same character on every device (AvatarSeed: SHA-256 of the id picks a colour from the palette, a second colour, a head shape, eyes and a mouth; tested against values worked out independently).

KindFaceFrame
YouA person's faceA green ring
A personA circle, squircle, hexagon or flower, with eyes, a mouth and cheeksA hairline
A conductorA head with an antenna and a visorA gold ring and a baton badge, so it stands out
A sessionThe same headAn indigo ring
A sub-agentThe same headA dashed ring

SendRoute draws who a note goes from and to: you, an arrow, then the recipient, or several recipients overlapping with "Sam, Ana and 3 more" beneath; with none, "This device". On the Identity screen, "How you look" offers a photo or another look.

Two ways to talk

Every note, picture and message travels one of two ways, and says which with a ChannelBadge.

LaneShared vault
DirectionOne wayBoth ways
HowSealed on your device to their key and dropped in their inbox; you can add to it but not read it back; the server sees only ciphertextBoth of you hold the vault's key and read and write the same encrypted files
Used forVoice notes, pictures, messages to agents, handing over a vault's keyIn VoiceDebrief, the Agents vault you share with Claude; in SGit Vaults, a vault shared with the people you choose (each person's key handed over by lane). Neither has yet been run on a device
Colour and symbolGreen, envelope.fillIndigo, lock.shield.fill
DrawingA sealed envelope travels one way into their inbox, with no way backOne vault between two faces, arrows both ways, files arriving from each side

ChannelDiagram(kind:me:them:large:) animates each, and stands still when Reduce Motion is on; TwoWaysToTalkView shows both with two sentences each, side by side on iPad and Mac, one above the other on iPhone.

Type, spacing and corners

The marks and the app icons

VoiceDebrief's mark is a voice becoming a note: five rounded bars, the sound, turning into three lines, the text, the first line green. SGit Vaults' mark is a vault whose door is a history: a rounded square holding a commit graph with one green branch. Both are white on the same navy, lit from the lower right by the app's own colour. They are drawn as code (iconVoiceDebrief and iconSGit in tools/art/art.mjs) and rendered to the 1024-pixel AppIcon.png in each asset catalogue.

VoiceDebriefSGit Vaults
The VoiceDebrief app iconThe SGit Vaults app icon

The pictures

The house style. A navy night card; a soft glow of the section's colour behind one subject; flat, rounded shapes with gentle gradients; off-white highlights; depth from one soft shadow; a faint dot grid. No words, no faces, no logos. One subject per picture, centred, with room around it so it reads at the size of a tile.

How they are made. Every picture is a function in tools/art/art.mjs that returns an SVG; node tools/art/render.mjs renders them in Chromium and writes 720 by 540 JPEGs (about 20 KB each) into the asset catalogues (Art/VDArt-*, Art/SGArt-*) and into website/assets/art/ for this site. Changing a picture is changing its function and running the script.

Pictures from image models. The owner offered image models through OpenRouter. tools/imagegen/ holds a generator for them that records each image's model and prompt in images.json, so any picture made that way can be remade. Its first run was refused because the key had reached its spending limit, so the section pictures and the app icons are drawn as code. Once the limit was raised, the generator made the first-visit pictures of both apps (VDArt-hero, SGArt-hero) and two of the infographics below, for about $0.04 each; each image's model, prompt, date and cost are written beside it in images.json when it is made. A generated picture may replace a drawn one if it keeps to the house style above.

Infographics

Explanations on the site are drawn in the same style, on a light ground, with words. Each is checked against what is built before it is published.

The life of a voice note: speak, transcript, debrief, library on the device; vault and contact encrypted, by choice

Two more, made by an image model (Gemini through OpenRouter) from the prompts in tools/imagegen/images.json, and read word by word before they were used:

What a vault is: your files, encrypted on your device, the server keeps only ciphertext, opened with the key on another device

Sending a note to a contact: you finish a note for a contact, it is encrypted to their key, only they can open it

Where it is applied