Show someone — redesigned

Four kinds of card, one shape. The screen a visitor opens standing in front of a driver, a pharmacist or a server — signed out, offline, one-handed, in under three seconds. Both modes. Nothing here is implemented.

Reviewed against the built screen. Links taegeuk.css and redeclares nothing.
What this replaces
The built screenWhy it fails at the moment it is forWhat replaces it
Two flag-red panels side by side — What you cannot eat (empty, unfilled) and Emergency (live, life-safety) Red is the loudest thing the palette has and it is spent on a prompt that has nothing behind it yet. The two read as peers. Nothing on the screen is louder than the least useful tile on it. A 3px left edge carries kind. Red fill is spent on exactly one surface, and it is Emergency.
A + Add your hotel tile sitting in the grid An empty slot shaped like a card. The grid is meant to be scannable at arm's length; a hole in it is read as a card that failed to load. Missing facts leave the grid entirely and become Make a card rows underneath it.
A second, unrelated section — Cue cards on this trip — with its own search, its own list and its own empty state Two lists of the same object, in two registers, with two ways to add. It is the split that produced "What are these cards with + on?", and labelling the halves treated the symptom. One grid. One search. A kept cue card is a card like any other and sits in the grid beside the hotel.
A four-line explanatory paragraph at the bottom Copy doing a layout's job. Nobody reads it, and it is at the end — after the screen has already confused them. The provenance is a one-line mono footer on each tile: where this card came from, on the card itself.
Cards bookmarked in Korea or Places do not appear at all A user who saved 광장시장 in Places has already told us they intend to go there. Making them search a 1,340-sentence phrasebook for it is asking twice. A saved place that carries Korean is a card here, marked SAVED IN PLACES.
The model — four origins, one object
#OriginExampleKorean on the tile?Footer
1System — ours, always present, needs no trip and no account Emergencyn/a — it is not a tilePINNED
2Built from a fact you gave us Your hotel → an address card. Your allergy → a dietary card. Yes for the address — it is a 도로명주소 you copied out of Naver, the Korean party's own words. No for the dietary card, and not for the usual provenance reason: it is a medical fact and a tile is glanceable over a shoulder. FROM YOUR HOTEL
3Kept from the phrasebook, or bookmarked in Korea / Places 여기로 가주세요 with 효제분식 filled in · 광장시장 Yes — reviewed corpus, or a venue's registered name SAVED IN PLACES · KEPT FROM 1,340
4You wrote it — typed in English, machine-translated "My daughter is lost. She is wearing a yellow coat." Yes, in a different register: dashed edge, NOT CHECKED, Korean at the smaller step and never at full contrast YOU WROTE THIS
🚨 The one rule this changes, deliberately. The built screen shows no Korean at all on a machine-produced tile (koreanPreview is null), because previewing unreviewed Korean beside reviewed Korean puts the two in one visual register — PRD §8.3, and it is right. But the consequence is a grid of English-only tiles, and a card with no Korean on it cannot be recognised at arm's length, which is the entire job of this grid.

So the two are put in different registers instead of one being hidden: solid edge and full contrast for Korean somebody is accountable for, dashed edge, reduced contrast and a NOT CHECKED pill for machine output. That is the vocabulary taegeuk.css already promoted for .tag.u — an honest gap drawn as a gap. The dietary card keeps its blank face regardless, for the second reason, which is medical and not about provenance at all.
Dark · 375 × 812
21:04
✈︎ WORKS WITH NO SIGNAL
Show someone
Tap one and hold the phone up. Turn the brightness all the way up first.
Search your cards, or all 1,340 phrases
All 8 Go somewhere 3 Eating 1 Asking 3 Yours 1
Chips are what the READER does — not where the card came from. At a taxi rank you need "go somewhere", never "type 2".
Tonight1 CARD
Show a driver
조선 팰리스 서울
서울 강남구 테헤란로 87길 46
Josun Palace Seoul · Gangnam-gu
Your stay, 6–11 April
Copy the Korean Full screen
FROM YOUR HOTEL · TYPED 2 APR
One hero, chosen by the trip, not by the user. Between 6 and 11 April the card held up most often is the one that gets you back to where you are sleeping. On the day of the flight this slot is the airport; with no trip it is absent and the grid starts at the top.
Everything else7 CARDS
The dietary tile is the only one with no Korean on it, and the reason is not provenance — it is a medical fact, and a grid is glanceable over a shoulder. It says what the card DOES instead.
The card you wrote goes full width and dashed. Reduced contrast on the Korean, a NOT CHECKED pill, and the warning on the card rather than in a footnote nobody reaches.
Make a card
+
Add a second address
A friend's place, the office, the airport hotel
+
文
Write your own card
Type English — we translate it, and mark it unchecked
+
The two makers, out of the grid and named. On the built screen one of them is a hole in the grid and the other is a row buried under a search box, so they were never seen as two halves of the same thing.
Emergency
POLICE · FIRE · AMBULANCE · NO ACCOUNT, NO SIGNAL
119
Trip
Korea
You
1 · Show someone — a live trip
Emergency is pinned, and that is the biggest single change. It is the one card that may have to be found while panicking, in the dark, by somebody who has never opened this screen. A grid reflows every time a card is added — so the tile that must never move is taken out of the grid and given a fixed place above the tab bar. It is also the only red fill left on the screen, which is what makes it the loudest thing here.
Nothing on this screen awaits a request. Every tile reads Drift. No spinner, no session, no network — the chip at the top says so once, so the subline does not have to.
9:41
✈︎ WORKS WITH NO SIGNAL
Show someone
Cards you hold up to a Korean speaker. You have one so far — and it is the one that matters most.
Search your cards, or all 1,340 phrases
Build your first two2 FACTS
🏨
Where are you staying?
Paste the Korean address — it becomes a card a driver can read
+
🍽
Anything you cannot eat?
We name the broths and pastes it hides in — 다시다, 젓갈, 굴소스
+
文
Write your own card
Type English — we translate it, and mark it unchecked
+
The empty state teaches by asking, not by explaining. Three rows, each one a question with an answer box behind it. The built screen's four-line paragraph said the same thing and nobody had to act on it.
Already yours1 CARD
Asking
여기로 가주세요.
Take me here. — you will be asked which place, each time you show it
SHIPPED WITH THE APP · REVIEWED
Never a genuinely empty screen. One reviewed card ships with the app, because the first taxi happens before anybody has kept anything.
From what you saved
Nothing bookmarked yet
Anything you save in Places that carries a Korean name or address turns up here on its own. You do not add it twice.
Emergency
POLICE · FIRE · AMBULANCE · NO ACCOUNT, NO SIGNAL
119
Trip
Korea
You
2 · First run — nothing kept yet
Emergency is in the same place on an empty screen as on a full one. That is the point of pinning it: a visitor with no trip, no account and no data still has the one card that cannot wait, and it is where it will be for the rest of the trip.
13:52
taxi ×
On this trip · 2
🚕
여기로 가주세요. 효제분식.
Take me here — Hyoje Bunsik
−
🚕
여기로 가주세요. 조선 팰리스 서울.
Take me here — your hotel
−
Two variations of one sentence, and both are kept. Whatever is in the destination slot is what makes a card its own card — searching must never fold them back together, and it must never hide one because the other exists.
The phrasebook · 1,340 reviewed sentences
❝
여기로 가주세요.
Take me here. · 2 ON THIS TRIP · ASKS FOR A PLACE
+
❝
카드로 계산할 수 있어요?
Can I pay by card? · kadeuro gyesanhal su isseoyo
+
❝
트렁크 좀 열어 주세요.
Please open the boot. · teureongkeu jom yeoreo juseyo
+
❝
여기서 세워 주세요.
Stop here, please. · yeogiseo sewo juseyo
+
Or say it yourself
文
Write a card about “taxi”
Type English — we translate it, and mark it unchecked
+
Writing your own is the LAST option and it is seeded with the query. 1,340 reviewed sentences is almost always the better answer, so it sits under them — but when it is genuinely not there, the user does not have to retype what they just searched for.
One field, three zones, all three labelled. The built screen has the trip's cards and the phrasebook's results in one unlabelled column with the same row widget, which is what produced "What are these cards with + on? If they are not on this trip, it shouldn't be shown here." The + / − is the tell: + adds, − removes, and no row ever carries both.
Emergency
POLICE · FIRE · AMBULANCE · NO ACCOUNT, NO SIGNAL
119
Trip
Korea
You
3 · Search — one field, three labelled zones
Searching does not replace the grid, it replaces the page. Back returns to exactly the scroll position the user left, with the new card already in the grid.
21:06
☀︎ BRIGHTNESS AT 100%
Show a driver
여기로 가주세요.
조선 팰리스 서울
서울 강남구 테헤란로 87길 46
yeogiro gajuseyo · Josun Palace Seoul
Take me here, please.
Say it out loud Copy the Korean
REVIEWED SENTENCE · CLIP SHIPPED WITH THE APP
NOTHING HERE NEEDS A NETWORK
No chrome, no tab bar, no grid. The phone is out of the holder's hands and in a stranger's eyeline — every pixel that is not the sentence is a pixel they have to look past. Brightness is forced to 100% on entry and restored on exit.
Korean leads at display size here and only here (and on the driver block of place detail). Everywhere else in dani.ko English is the headline and Korean the annotation — the reader on this screen is Korean.
Copy always copies the KOREAN string, never the romanisation. The button exists so Kakao T can route to it.
4 · The handover surface — reviewed
Say it out loud is a shipped clip, not a request. The sentence is corpus, so the audio is in the bundle — no network, no synthesis, nothing to pay for. A card the user WROTE is the other case; see frame 5.
21:09
Show someone
Search your cards, or all 1,340 phrases
Show a driver
광장시장
Gwangjang Market
SAVED IN PLACES
Asking
이거 얼마예요?
How much is this?
KEPT FROM 1,340
Write your own card
Type it in English. Keep it to one sentence — it is going to be read by a stranger at arm's length.
My daughter is lost. She is wearing a yellow coat.
What the card will say
NOT CHECKED
Yours
제 딸이 없어졌어요. 노란색 코트를 입고 있어요.
My daughter is lost. She is wearing a yellow coat.
MACHINE-TRANSLATED · NOT CHECKED BY A KOREAN SPEAKER
We are not going to pretend this is checked. A machine wrote the Korean. It will be understood far more often than not, and it will occasionally be wrong in a way neither of you can see — so the card says so, on its face, to both of you.
Keep this card Cancel
5 · Write your own — and the card it produces
The card is shown BEFORE it is kept. The user is agreeing to a specific Korean string, with the warning attached to it, rather than to a promise that one will appear. This is the sheet the built screen opens with no preview at all.
Voice on a card you wrote is synthesised per user and never pooled. A place name and a road address are public facts and are cut once, system-wide; a sentence about your daughter is yours, and it does not go in a table every other user's request reads from.
Light · 375 × 812
21:04
✈︎ WORKS WITH NO SIGNAL
Show someone
Tap one and hold the phone up. Turn the brightness all the way up first.
Search your cards, or all 1,340 phrases
All 8 Go somewhere 3 Eating 1 Asking 3 Yours 1
Emergency
POLICE · FIRE · AMBULANCE · NO ACCOUNT, NO SIGNAL
119
Trip
Korea
You
1 · Show someone — a live trip
The 3px edge survives light mode where a red fill would not: flag red at full bleed on a white page is a fire alarm, and it is why the built screen's two red panels read as an error state rather than as content.
9:41
✈︎ WORKS WITH NO SIGNAL
Show someone
Cards you hold up to a Korean speaker. You have one so far — and it is the one that matters most.
Search your cards, or all 1,340 phrases
Build your first two2 FACTS
🏨
Where are you staying?
Paste the Korean address — it becomes a card a driver can read
+
🍽
Anything you cannot eat?
We name the broths and pastes it hides in — 다시다, 젓갈, 굴소스
+
文
Write your own card
Type English — we translate it, and mark it unchecked
+
Already yours1 CARD
Asking
여기로 가주세요.
Take me here. — you will be asked which place, each time you show it
SHIPPED WITH THE APP · REVIEWED
From what you saved
Nothing bookmarked yet
Anything you save in Places that carries a Korean name or address turns up here on its own. You do not add it twice.
Emergency
POLICE · FIRE · AMBULANCE · NO ACCOUNT, NO SIGNAL
119
Trip
Korea
You
2 · First run — nothing kept yet
13:52
taxi ×
On this trip · 2
🚕
여기로 가주세요. 효제분식.
Take me here — Hyoje Bunsik
−
🚕
여기로 가주세요. 조선 팰리스 서울.
Take me here — your hotel
−
The phrasebook · 1,340 reviewed sentences
❝
여기로 가주세요.
Take me here. · 2 ON THIS TRIP · ASKS FOR A PLACE
+
❝
카드로 계산할 수 있어요?
Can I pay by card? · kadeuro gyesanhal su isseoyo
+
❝
트렁크 좀 열어 주세요.
Please open the boot. · teureongkeu jom yeoreo juseyo
+
❝
여기서 세워 주세요.
Stop here, please. · yeogiseo sewo juseyo
+
Or say it yourself
文
Write a card about “taxi”
Type English — we translate it, and mark it unchecked
+
Emergency
POLICE · FIRE · AMBULANCE · NO ACCOUNT, NO SIGNAL
119
Trip
Korea
You
3 · Search — one field, three labelled zones
21:06
☀︎ BRIGHTNESS AT 100%
Show a driver
여기로 가주세요.
조선 팰리스 서울
서울 강남구 테헤란로 87길 46
yeogiro gajuseyo · Josun Palace Seoul
Take me here, please.
Say it out loud Copy the Korean
REVIEWED SENTENCE · CLIP SHIPPED WITH THE APP
NOTHING HERE NEEDS A NETWORK
4 · The handover surface — reviewed
Light mode is the one that matters here. This screen is held up in daylight as often as in a bar, and a 40px Hangul on white at full contrast is the most legible thing the product can produce at two metres.
21:09
Show someone
Search your cards, or all 1,340 phrases
Show a driver
광장시장
Gwangjang Market
SAVED IN PLACES
Asking
이거 얼마예요?
How much is this?
KEPT FROM 1,340
Write your own card
Type it in English. Keep it to one sentence — it is going to be read by a stranger at arm's length.
My daughter is lost. She is wearing a yellow coat.
What the card will say
NOT CHECKED
Yours
제 딸이 없어졌어요. 노란색 코트를 입고 있어요.
My daughter is lost. She is wearing a yellow coat.
MACHINE-TRANSLATED · NOT CHECKED BY A KOREAN SPEAKER
We are not going to pretend this is checked. A machine wrote the Korean. It will be understood far more often than not, and it will occasionally be wrong in a way neither of you can see — so the card says so, on its face, to both of you.
Keep this card Cancel
5 · Write your own — and the card it produces
If this is approved
ChangeWhereSize
One grid instead of a grid plus a separate cue-card band show_gallery_screen.dartRewrite — the two halves merge into one list
Saved cue cards, saved places and fact cards become one HandyCard list handy_card.dart · buildHandyCards Additive — it already emits addresses from saved_addresses and from trip items; it gains the trip's cue-card rows
Emergency leaves the grid and becomes a pinned strip show_gallery_screen.dartSmall — the route already exists
The tile shows machine Korean in a dashed register handy_card.dart · koreanPreview 🚨 A rule change. handy_cards_test.dart asserts the opposite today and would be rewritten deliberately, not deleted
Chips filter by what the reader doesnew · local stateSmall
The write sheet previews the card before keeping it write_cue_card_sheet.dart Needs the translation round-trip before the keep, not after
Not decided here. Whether the hero slot picks the stay by date or by "most recently shown"; whether the chips persist between visits; and whether a card kept from Places should be removable from this screen without unsaving the place. All three are one line of behaviour and none of them changes the shape above.