anthropics / anthropics/claude-code

[Agent incident] 2026-08-08 14:45 - Příchozí si nepamatovaly sub-tab: default přepsal uloženou hodnotu dřív, než se stihla načíst

Open
#94,946 0 comments 0 reactions 0 assignees View on GitHub
area:model bug platform:intellij
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

### Summary

Incident recorded on **2026-08-08 14:45** while working with the coding agent in IntelliJ IDEA on a private Kotlin Multiplatform project.

### Environment

- Surface: Claude Code agent in IntelliJ IDEA (JetBrains plugin)
- Project: private Kotlin Multiplatform app (Android/iOS/desktop)

### Record (verbatim, Czech)

#### 2026-08-08 14:45 — Příchozí si nepamatovaly sub-tab: default přepsal uloženou hodnotu dřív, než se stihla načíst

- **Co uživatel hlásí:** „když kliknu Přijaté, škubne se to" a „u těchhle subtabů se má
otevírat tab Zprávy, když není nic jiného — narušení logiky Přijatých".
- **Co jsem naměřil v kódu:** `defaultIncomingSub` (AppRoot.kt:94) pravidlo dodržuje —
nepřečtené zprávy → Zprávy, jinak zájem → lajky → návštěvníci, a když **není nic
nového, tak Zprávy** (komentář „uživatelův pokyn"). Pravidlo tedy porušené nebylo.
Rozbité bylo něco jiného: `var incomingSub by remember { mutableStateOf(Visitors) }`
a hned pod ním `LaunchedEffect(incomingSub) { state.setIncomingSub(...) }`. Ten efekt
se spustil při PRVNÍ kompozici, tedy s počáteční hodnotou `Visitors`, a zapsal ji do
store — jenže `AppState._incomingSub` se ze store plní až v `boot()`. Uložený sub-tab
se tak přepsal dřív, než ho někdo přečetl.
- **Důsledek:** Příchozí se nikdy neotevřely tam, kde uživatel skončil (vždycky
Návštěvníci), a když obnova doběhla o kus později, `AnimatedContent` ještě slidnul
obsah stranou — to je ten viditelný škubanec po kliku na tab.
- **Škoda:** zadání z 3. 8. („appka si má pamatovat, kde uživatel skončil") u tabu
Příchozí tiše nefungovalo; uživatel to hlásil jako narušení logiky.
- **Jak zjištěno:** uživatel 8. 8. při testu.
- **Oprava:** zápis sub-tabu je podmíněný `state.ready` — dokud boot nedoběhne, nic se
neukládá, takže default nemá co přepsat.
- **Pravidlo:** efekt, který PERZISTUJE stav UI, se nesmí pouštět dřív, než se ten stav
načte — jinak default vždycky přepíše uloženou hodnotu. Klíčem je dokončený boot,
ne jen změna hodnoty.

Provenance in the project's git history

- record key: `2026-08-08 14:45`
- first committed: `2026-08-08T14:44:07+02:00`
- first commit: `8c396f3c15cf`
- stored versions of this record: 1
- files it lived in: `ai-incidents.md`, `ia-sabotages/ai-incidents.md`, `tool-sabotages/ai-incidents.md`

---
_Filed from a recovered incident log. The record above is reproduced verbatim from the project's `ai-incidents.md`; it was written in Czech at the time of the event._

Contributor guide

No contributing guide indexed for this repository

Research direction

The report names AppRoot.kt:94, AppState.boot(), and the ai-incidents.md history entry, but no file or test in claude-code is identified. Start by checking whether those private-project paths exist in the target repository; done would require a repository-local reproduction and test confirming the stored Incoming sub-tab survives boot without an initial default write.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
desktop-dev, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.