Not logged in · Please run /login

[2026-05-21] vault sync
This commit is contained in:
Alexey Martemyanov
2026-05-21 15:01:21 +06:00
parent 08708de9ca
commit e503ae101e
4 changed files with 87 additions and 12 deletions
+5 -4
View File
@@ -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 суба, прочитать топ-посты |
+30
View File
@@ -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 (суббота-воскресенье)
**Следующий шаг после:** Написать первый пост в один суб
+11
View File
@@ -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)._
@@ -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)