From e503ae101eb4374c225cffd0c0dc8b5655309931 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 21 May 2026 15:01:21 +0600 Subject: [PATCH] =?UTF-8?q?Not=20logged=20in=20=C2=B7=20Please=20run=20/lo?= =?UTF-8?q?gin=20[2026-05-21]=20vault=20sync?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- personal/business/profile.md | 9 ++-- personal/business/sessions/2026-W21.md | 30 ++++++++++++ work/briefs/inbox/2026-05-21.md | 11 +++++ .../chat-path-onboarding-tracker-blocking.md | 49 ++++++++++++++++--- 4 files changed, 87 insertions(+), 12 deletions(-) create mode 100644 personal/business/sessions/2026-W21.md create mode 100644 work/briefs/inbox/2026-05-21.md diff --git a/personal/business/profile.md b/personal/business/profile.md index ef4fc12f..ff848726 100644 --- a/personal/business/profile.md +++ b/personal/business/profile.md @@ -94,10 +94,10 @@ related: | Цель | Шкала | Комментарий | |------|-------|-------------| -| Первый платящий клиент | 1/10 | Нет ни одного | -| Понимание что делать следующим | 4/10 | Есть план до Алматы, конкретное действие на среду | -| Маркетинг AI-психолога | 3/10 | Первый твит опубликован 20.05, лендинг nolvu.qentra.top задеплоен | -| Использование DDG-данных | 2/10 | Первый конкретный шаг: 21.05 найти Grafana-дашборд | +| Первые пользователи | 1/10 | Нет ни одного | +| Понимание что делать следующим | 6/10 | Reddit-стратегия определена, конкретный шаг на 23–24.05 | +| Маркетинг AI-психолога | 4/10 | Канал найден: Reddit; nolvu отсутствует в точке принятия решения | +| Данные Bing WMT | 4/10 | «ai therapist» — 1.5k/мес подтверждён, спрос реальный | --- @@ -119,3 +119,4 @@ related: | 2026-05-18 | Вводная | Паттерн «контейнер» в бизнес-контексте; DDG-поисковик как конкурентное преимущество; цель — break-even на первом проекте | | 2026-05-18 | Сессия 1 — AI-психолог | Маркетинг уходит в postpone в реальном времени; реальный блок — страх публичности, не отсутствие навыка; договорённость: лендинг + пост в X до среды 20.05 | | 2026-05-20 | Сессия 2 — твит + нейминг + DDG | Первый твит опубликован в ходе сессии; нейминг — не блокер беты; DDG-данные впервые стали конкретным шагом; договорённость: 21.05 Grafana 2h timebox | +| 2026-05-21 | Сессия 3 — Reddit как канал | Целевой пользователь «ai therapist» уже выбирает, а не открывает; nolvu отсутствует на Reddit в точке принятия решения; договорённость: 23–24.05 найти 3 суба, прочитать топ-посты | diff --git a/personal/business/sessions/2026-W21.md b/personal/business/sessions/2026-W21.md new file mode 100644 index 00000000..f63385d7 --- /dev/null +++ b/personal/business/sessions/2026-W21.md @@ -0,0 +1,30 @@ +# Коучинг-сессия 3 — 2026-W21 (21.05.2026) + +## Тема +Маркетинг nolvu: Reddit как канал для первых пользователей + +## OSKAR шкалы (обновлено) +- Первые пользователи: 1/10 +- Понимание что делать: 6/10 +- Маркетинг: 4/10 +- Данные Bing WMT: 4/10 + +## Ключевые инсайты + +### Целевой пользователь (ai therapist, ~1.5k/мес Bing) +- Уже принял решение: хочет AI, не человека-терапевта +- Стадия выбора, не открытия +- Путь: Bing «ai therapist» → Reddit за отзывами конкурентов +- nolvu на Reddit отсутствует полностью + +### Разрыв +Пользователь приходит на Reddit чтобы выбрать — а nolvu там нет. Его не существует в точке принятия решения. + +### its_capitan framework применительно к ситуации +- Запускай то, что люди уже ищут ✓ (ai therapist — 1.5k/мес) +- Иди туда где аудитория уже есть → Reddit + +## Действие +**Что:** Изучить Reddit — найти 3 суба где обсуждают «ai therapist», прочитать топ-посты, понять что работает +**Срок:** 23–24 мая 2026 (суббота-воскресенье) +**Следующий шаг после:** Написать первый пост в один суб diff --git a/work/briefs/inbox/2026-05-21.md b/work/briefs/inbox/2026-05-21.md new file mode 100644 index 00000000..100ff1d7 --- /dev/null +++ b/work/briefs/inbox/2026-05-21.md @@ -0,0 +1,11 @@ +## Inbox Triage — 2026-05-21 (since 2026-05-21T13:01:05) + +### Nothing new + +Inbox quiet — nothing new. + +_Note: Snapshot generated at 07:28 UTC. SINCE = ~07:01 UTC. Activity in that window: (1) automated Asana overdue reminder on "Remove or re-evaluate Warn Before Quit pixels" — excluded (bot); (2) completed daily "What is your 1 Must today?" — excluded (routine). No new human signals. @mentions query skipped — DB not accessible from local Mac._ + +_Previous run (13:01): also quiet._ +_Previous run (14:01): also quiet. Confirmed via Asana MCP — no tasks modified after SINCE (07:32 UTC). Andrei comment at 07:44 UTC in "Camera access prompt" incident confirmed as @mention of a different user (GID 1200811069313903 ≠ Alex 1202406491309495)._ +_Run (14:31): also quiet. Snapshot (08:32 UTC) covers SINCE window (08:01 UTC) — all activity predates SINCE. @mentions query skipped (DB not accessible from local Mac)._ diff --git a/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md b/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md index caa36898..036f47f9 100644 --- a/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md +++ b/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md @@ -8,14 +8,14 @@ ## PR Stack -| PR | Branch | Review status | -|---|---|---| -| [#4544](https://github.com/duckduckgo/apple-browsers/pull/4544) | `demo-tracker-blocking-onboarding` | Open — review required (Alessandro + Rachel left comments) | -| [#4584](https://github.com/duckduckgo/apple-browsers/pull/4584) | `demo-tracker-blocking-onboarding-eoj-dax-animation` | **Merged** ✅ 2026-05-18 | -| [#4591](https://github.com/duckduckgo/apple-browsers/pull/4591) | `demo-tracker-blocking-onboarding-ui-polish` | **Merged** ✅ 2026-05-15 | -| [#4664](https://github.com/duckduckgo/apple-browsers/pull/4664) | `demo-tracker-blocking-onboarding-chat-path-dialog-polish` | **Merged** ✅ 2026-05-15 | -| [#4855](https://github.com/duckduckgo/apple-browsers/pull/4855) | `demo-tracker-blocking-onboarding-sr-feedback` | Open — no review yet | -| [#4668](https://github.com/duckduckgo/apple-browsers/pull/4668) | `demo-tracker-blocking-onboarding-uti-flow` | **Open — fixes applied (2026-05-21)** — bottom-bar blocker fixed; B1/B2/B3 cleanups done; merged main | +| PR | Branch | Review status | +| --------------------------------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| [#4544](https://github.com/duckduckgo/apple-browsers/pull/4544) | `demo-tracker-blocking-onboarding` | Open — review required (Alessandro + Rachel left comments) | +| [#4584](https://github.com/duckduckgo/apple-browsers/pull/4584) | `demo-tracker-blocking-onboarding-eoj-dax-animation` | **Merged** ✅ 2026-05-18 | +| [#4591](https://github.com/duckduckgo/apple-browsers/pull/4591) | `demo-tracker-blocking-onboarding-ui-polish` | **Merged** ✅ 2026-05-15 | +| [#4664](https://github.com/duckduckgo/apple-browsers/pull/4664) | `demo-tracker-blocking-onboarding-chat-path-dialog-polish` | **Merged** ✅ 2026-05-15 | +| [#4855](https://github.com/duckduckgo/apple-browsers/pull/4855) | `demo-tracker-blocking-onboarding-sr-feedback` | **Merged** ✅ 2026-05-15 | +| [#4668](https://github.com/duckduckgo/apple-browsers/pull/4668) | `demo-tracker-blocking-onboarding-uti-flow` | **Open — fixes applied (2026-05-21)** — bottom-bar blocker fixed; B1/B2/B3 cleanups done; merged main | --- @@ -23,6 +23,39 @@ --- +### C1 — Intro onboarding background lingers during UTI duck.ai transition *(2026-05-21)* +**Status:** ✅ Fixed *(2026-05-21)* +**Repro:** New install, UTI + experiment flags enabled → complete intro onboarding choosing duck.ai mode → the gradient/decorative background from the intro onboarding is still visible during the hand-off to the UTI duck.ai first-request state. +**Root cause:** In UTI mode `onboardingCompletedWithExperimentTransition` called `setBarsVisibility(0, animated: true)` which tears down the UTI session mid-animation. The snapshot fade was not enough because the keyboard / UTI input bar dismissal raced with the transition. +**Fix:** In `MainViewController+DuckAIExperiment.swift`, detect UTI active mode and skip the `setBarsVisibility` call entirely; instead let the UTI session handle its own dismissal cleanly. The intro background snapshot fades out independently without fighting the bar-visibility animation. +**Files:** `MainViewController+DuckAIExperiment.swift` + +### C2 — Chats + Tabs buttons not disabled during AI onboarding *(2026-05-21)* +**Status:** ✅ Fixed *(2026-05-21)* +**Repro:** UTI + experiment flags enabled → advance to duck.ai first-request step → the Chat-list button and Tab-switcher button in the AI chat header remain tappable and visually undimmed. +**Root cause:** `setOnboardingLocked(_ locked:)` in `AIChatTabChatHeaderView.swift` only disabled `appMenuButton`, `newChatButton`, and `titleContainer`. `chatListButton` and `tabSwitcherButton` were not included. `TabSwitcherStaticButton` also does not auto-dim on `isEnabled = false` (unlike standard `UIButton`), so explicit alpha was needed. +**Fix:** Added `chatListButton.isEnabled`, `chatListButton.alpha`, `tabSwitcherButton.isEnabled`, and `tabSwitcherButton.alpha = locked ? 0.5 : 1` to `setOnboardingLocked`. +**Files:** `AIChatTabChatHeaderView.swift` + +### C3 — Fire button invisible + no blinking circle during duck.ai fire dialog *(2026-05-21)* +**Status:** ✅ Fixed *(2026-05-21)* +**Repro:** UTI + experiment flags enabled → complete duck.ai first request → fire dialog appears but fire button is disabled/faded and has no `ViewHighlighter` pulse circle (or pulse appears in wrong position, below screen). +**Root cause (multi-part):** +1. In UTI AI-tab mode the fire button is `UnifiedToggleInputView.aiTabCollapsedFireButton` (the flanking pill button to the left of the input bar), NOT the traditional toolbar fire button. The toolbar is hidden by `reconcileToolbarVisibilityForCurrentTab()`. +2. `showFireButtonPulse()` only checked `toolbar.isHidden` for the iPad path; on iPhone with UTI it returned `nil` (no `tabsBarController`) and exited without highlighting. +3. `setOnboardingControlsLocked(true)` set `viewController.view.isUserInteractionEnabled = false`, which disabled the entire view tree including the fire button — child `isUserInteractionEnabled = true` cannot override a parent's `false` in UIKit. +4. `viewController.view.alpha = 0.5` multiplied down the tree, dimming the fire button even after attempting `fireButton.alpha = 1`. +5. The text entry (`SwitchBarTextEntryView`) directly becomes first responder on tap, bypassing all `isOnboardingLocked` guards. + +**Fix:** +- Exposed `aiTabCollapsedFireButton` through the chain: `UnifiedToggleInputView.aiTabFireButton` → `UnifiedToggleInputViewController.aiTabFireButton` → `UnifiedToggleInputCoordinator.aiTabFireButton`. +- `showFireButtonPulse()` in `MainViewController`: if UTI coordinator is active and `aiTabFireButton.isHidden == false`, use that button for `ViewHighlighter.showIn`. +- Replaced view-level `isUserInteractionEnabled = false` + `alpha` in `setOnboardingControlsLocked` with a new `setOnboardingDimmed(_ dimmed:)` method on `UnifiedToggleInputView` that: (a) sets `alpha = 0.5` on every direct subview *except* `aiTabCollapsedFireButton` (siblings, so no multiplicative alpha issue), and (b) sets `textEntryView.isUserInteractionEnabled = false` to block direct first-responder activation. +- Added `guard !isOnboardingLocked else { return }` to `unifiedToggleInputVCDidTapVoice` (previously missing) so the voice button is also blocked. +- Rolled back the earlier wrong fix (`viewCoordinator.toolbar.isHidden = false` in `applyExperimentDuckAIFireChromeState`). + +**Files:** `UnifiedToggleInputView.swift`, `UnifiedToggleInputViewController.swift`, `UnifiedToggleInputCoordinator.swift`, `MainViewController.swift`, `MainViewController+DuckAIExperiment.swift` + ### ✅ SR — GJ2/ Remove X button from chat-path dialogs **Source:** [Gary Apr 29](https://app.asana.com/1/137249556945/task/1214147157456478/comment/1214409112744728)