Skip to content

feat(today): make the task page and typing feel native on phones - #111221

Open
puemos wants to merge 4 commits into
masterfrom
posthog/today-phone-touch-polish
Open

puemos wants to merge 4 commits into
masterfrom
posthog/today-phone-touch-polish

Conversation

@puemos

@puemos puemos commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Problem

  • On a phone, a task page runs past both screen edges, shows two back buttons, and has a tiny reply box.
  • A task with no run shows one grey line, and the header repeats the Run task button.
  • The tab bar stays on screen while the keyboard is open, taps flash gray, and a long press on a row opens the iOS link menu.
  • In a narrow scene, scene title actions always wrap to a second row, even when they fit beside the title.
  • Part of the phone epic Epic: New web experience on phones #111191.

Changes

  • The task thread, its loading skeleton and the reply box keep 16px side margins under today-rail-nav. Before, a -mx-4 meant for the padded /tasks page pushed them 16px past each edge inside the unpadded PostHog AI page.
  • On phones the task header has no second back button, because the phone header already has one.
  • On phones the reply box says "Reply…" or "Start a new run…", and the send and stop buttons are larger.
  • Under the new skin, a task with no run shows an empty state with its prompt and a full-width Run task button. The header no longer repeats it.
  • Scene title actions share the title row when the title keeps at least 12rem, and wrap under it only when they do not fit.
  • On touch phones the tab bar hides while a text field has focus. The tab bar and pane rows drop the tap flash and the iOS long-press menu.

Task page, before and after, at 390 × 844:

task-phone-before

task-phone-after

Insights page, then the same page with the search field focused:

prJ

How did you test this code?

  • Rendered eight task states (loading, not run yet, starting, working, typing, done, failed, artifacts) inside the real app shell at 390 × 844 in Storybook, with mocked task, run, log and stream responses, before and after.
  • Rendered the feature flags, views and space pages to check the new title wrap rule.
  • Ran the frontend type check, Oxfmt and Oxlint.
  • Not checked: a real iPhone, the on-screen keyboard and the long-press menu.

Test rationale: No new test. The changes are layout classes, copy and one presentational empty state, and the screenshots cover them.

Release status

  • No feature flag controls this change
  • This change is behind a feature flag and is not available to users
  • This change makes a previously flagged feature available to everyone

Automatic notifications

  • Publish to changelog?

Docs update

None.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Agent: PostHog Desktop (Claude Code), Claude Opus 5.5

  • The focus rule sits under pointer: coarse, so a narrow desktop window keeps its tab bar while a field has focus.
  • Skills: /writing-ui-components, /writing-pr-descriptions.

Created with PostHog Desktop

🤖 Generated with Claude Code

@puemos puemos self-assigned this Oct 3, 2026
@parameterai

parameterai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Risk: No findings

This increment adds phone-layout polish to the TaskTracker and scene header UI (responsive wrapping, button sizing, an empty-state "Run task" screen) plus infinite-scroll pagination for the Views sidebar — pure presentation changes with no security-relevant surfaces. Note the commit contains two files the PR summary omits (TodayViewsSidebar.tsx, todayViewsLogic.ts), but both are benign pagination logic. No findings.

Sentinel reviewed 2e1e67e · Review settings

@puemos
puemos added this pull request to stack #111196 October 3, 2026 03:26
@puemos puemos mentioned this pull request Oct 3, 2026
8 of 10 tasks
stamphog[bot]

This comment was marked as outdated.

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk merge

@trunk-io

trunk-io Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

✨ Stack submitted to Merge by @puemos. It will be added to the merge queue once all branch protection rules pass. See more details here.

@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

🤖 CI report

✅ Trunk lane — non-backend lane

This PR is assigned to the non-backend lane. It does not run backend Python tests and may merge in parallel with PRs in other lanes.

⚠️ Complexity (TypeScript) — 5 functions above the limit (max 28)

Cyclomatic complexity above the limit in changed typescript files (10 for production files, 15 for test files). Warn only: worth simplifying when you next touch these functions.

Function Location Complexity Limit
TaskDetailPage products/posthog_ai/frontend/scenes/TaskTracker/components/TaskDetailPage.tsx:27 28 10
TaskRunComposer products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunComposer.tsx:40 21 10
TaskRunSceneShell products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunSceneShell.tsx:63 20 10
TaskRunLog products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunLog.tsx:16 17 10
TaskRunChat products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunChat.tsx:49 13 10
✅ Duplication (Python) — clean

New Python code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.

✅ Duplication (TypeScript) — clean

New TypeScript code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.

✅ Bundle size — no change

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 69.84 MiB · no change

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

✅ Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.64 MiB · 22 files 🔺 +458 B (+0.0%) █████████░ 89.0% of 1.84 MiB
logged-out boot: index + App + bootApp (preloaded by every page, including /login)
src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
3.73 MiB · 661 files 🔺 +458 B (+0.0%) █████████░ 92.5% of 4.03 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
7.59 MiB · 2,410 files 🔺 +491 B (+0.0%) █████████░ 91.0% of 8.34 MiB
dashboard scene
src/scenes/dashboard/Dashboard.tsx
9.68 MiB · 3,400 files 🔺 +491 B (+0.0%) ███████░░░ 71.9% of 13.48 MiB
today home path
src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
7.61 MiB · 2,418 files 🔺 +491 B (+0.0%) █████████░ 88.6% of 8.58 MiB
events scene
src/scenes/activity/explore/EventsScene.tsx
9.30 MiB · 3,252 files 🔺 +491 B (+0.0%) ███████░░░ 73.6% of 12.64 MiB
replay detail scene
src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
12.14 MiB · 4,138 files 🔺 +491 B (+0.0%) ████████░░ 77.2% of 15.72 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/layout/navigation-3000/navigationLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/scenes/dashboard/dashboardLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/lemon-ui/LemonMarkdown/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/RichContentEditor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/CodeSnippet/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/taxonomy/core-filter-definitions-by-group.json stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/today/TodayReportPage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/index.tsx
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
854 B src/scenes/ChunkLoadErrorBoundary.tsx
Largest files eagerly shipped from src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
220.3 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
100.5 KiB src/lib/api.ts
92.7 KiB src/products.tsx
69.4 KiB src/lib/lemon-ui/icons/icons.tsx
40.1 KiB src/lib/utils/eventUsageLogic.ts
38.7 KiB ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js
33.9 KiB ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js
29.0 KiB ../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.7 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
111.8 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.7 KiB src/products.tsx
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
181.8 KiB src/queries/validators.js
153.7 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
111.8 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.7 KiB src/products.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.7 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
111.8 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.7 KiB src/products.tsx
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
Largest files eagerly shipped from src/scenes/activity/explore/EventsScene.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
181.8 KiB src/queries/validators.js
153.7 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
111.8 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.7 KiB src/products.tsx
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
Size File
315.5 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/rrweb.js
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
181.8 KiB src/queries/validators.js
153.7 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
111.8 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

✅ Toolbar bundle — eager 2.20 MiB within budget

What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.

Metric Size Δ vs base Budget
Eager (shipped)
entry + static imports
2.20 MiB · 19 files 🔺 +69 B (+0.0%) ████░░░░░░ 38.5% of 5.72 MiB
Deferred (lazy) 2.11 MiB · 44 files no change n/a — loads on demand
Loader dist/toolbar.js 1.2 KiB no change █░░░░░░░░░ 6.0% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
839.8 KiB dist/toolbar/toolbar-app-LI5KXBNK.css
657.6 KiB dist/toolbar/chunk-chunk-G7C7ZW6O.js
259.4 KiB dist/toolbar/chunk-chunk-7JWMBALG.js
138.2 KiB dist/toolbar/chunk-chunk-QOC7WPJS.js
131.8 KiB dist/toolbar/chunk-chunk-FDH2IBXT.js
75.2 KiB dist/toolbar/toolbar-app-JODXHF2L.js
69.0 KiB dist/toolbar/chunk-chunk-TSAL54PB.js
35.6 KiB dist/toolbar/chunk-chunk-WYU4W6EZ.js
21.0 KiB dist/toolbar/chunk-chunk-J4E4MFBH.js
6.8 KiB dist/toolbar/chunk-chunk-DV7IWQNF.js

Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile

✅ Dist folder size — 🔺 +5.6 KiB (+0.0%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 961.10 MiB · 🔺 +5.6 KiB (+0.0%)

✅ Playwright — all passed

All tests passed.

View test results →

@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

🧰 Additional context used
📚 Code guidelines (13)
products/posthog_ai/frontend/AGENTS.md — auto-discovered
frontend/src/layout/scenes/AGENTS.md — auto-discovered
.cursor/rules/react-typescript.mdc — auto-discovered
.agents/skills/using-kea-disposables/SKILL.md — configured
.agents/skills/writing-ui-components/SKILL.md — configured
.agents/security.md — configured
docs/published/handbook/engineering/type-system.md — configured
.agents/skills/adopting-generated-api-types/SKILL.md — configured
.agents/skills/placing-product-frontend-code/SKILL.md — configured
.agents/skills/writing-kea-logics/SKILL.md — configured
.agents/skills/writing-user-facing-copy/SKILL.md — configured
.claude/commands/conventions.md — configured
.agents/skills/writing-code-comments/SKILL.md — configured

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: PostHog/posthog/.coderabbit.yaml
  • Review profile: QUIET
  • Plan: Enterprise
  • Run ID: 40f78f22-d612-43d0-be93-5910f8dd59e8
📥 Commits

Reviewing files that changed from the base of the PR and between cd5da1d and 2e1e67e.

📒 Files selected for processing (9)
  • frontend/src/layout/scenes/components/QuillSceneHeader.tsx
  • products/posthog_ai/frontend/components/quill/QuillComposerSendButton.tsx
  • products/posthog_ai/frontend/scenes/TaskTracker/components/QuillTaskNotRunEmpty.tsx
  • products/posthog_ai/frontend/scenes/TaskTracker/components/TaskDetailPage.tsx
  • products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunChat.tsx
  • products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunComposer.tsx
  • products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunLoadingSkeleton.tsx
  • products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunLog.tsx
  • products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunSceneShell.tsx

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The Today phone layout hides the tab bar while an editable element is focused on coarse-pointer devices. It also disables touch callouts on the row-size button and tab bar, and disables tab-bar text selection and tap highlights. Quill controls and task views adjust sizing, placeholders, navigation, empty-state actions, and spacing based on layout and thread skin.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to 2e1e6

The phone task changes retain a way to start a task’s first run. No actionable merge-blocking issue remains in the reviewed changes.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 2e1e6

The Run task control reuses the existing task-specific execution path and server authorization checks. No expansion of execution privileges was identified. Concurrent dispatch and interrupted-request recovery behavior were not fully established.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The changed control targets the same task-scoped execution path as the prior header action. The inspected change does not add a separate execution authority or cross-tenant path; successful execution remains subject to backend controls.

Trust Boundaries and Controls

  • observed — The run endpoint applies authenticated access and task-control checks before execution. Task access is team-scoped, and mutation uses task_control_q rather than broader read visibility. Runtime, code-access, usage, and agent gates remain on the execution path. The complete control predicate was not inspected.

Resilience and Maintainability Implications

  • observed — The relocated control uses the existing shared in-flight state. Success updates and selects the returned run, removing the empty state; failure clears loading and preserves retryability. These transitions retain task-scoped state ownership rather than introducing a second execution state machine.
🚥 Pre-merge checks | ✅ 1
✅ Passed checks (1 passed)
Check name Status Explanation
Description check ✅ Passed The description explains the user problem, visible changes, testing, release status, and includes screenshots. The agent context omits a session link and the CodeRabbit CLI disposition, but the descri…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@trunk-io

trunk-io Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Static Badge   Static Badge   Static Badge

Failed Test Failure Summary Logs
Scenes/Code review Default play-test The test failed because a logic component was not mounted when accessed, and there were unhandled network requests intercepted by the mock service... Logs ↗︎
Scenes-App/Notebooks/Nodes/Customer Journey AllStepsCompleted smoke-test The test timed out while waiting for an element with the class '.react-flow__node' to become visible. Logs ↗︎
compareTopLevelSections() reports a modifiers change when the current query overrides the team default A TypeError occurred because the code attempted to access the 'add' property of an undefined object. Logs ↗︎

View Full Report ↗︎ ⋅ Docs

Base automatically changed from posthog/today-phone-touch-rows to master October 3, 2026 04:03
@stamphog
stamphog Bot dismissed their stale review October 3, 2026 04:03

The PR was retargeted to a different base branch, so the approved diff is no longer what was reviewed. Stamphog re-reviews automatically.

On touch phones the tab bar hides while a text field has focus, so the keyboard does not push it over the page. The tab bar and pane rows drop the gray tap flash and the iOS long-press link menu, so a long press opens the row's own menu.

Refs #111191

Generated-By: PostHog Desktop
Task-Id: 4ef04d0a-342e-45f7-a929-9856c235e586
@puemos
puemos force-pushed the posthog/today-phone-touch-polish branch from d0fb7ba to b521734 Compare October 3, 2026 04:05
stamphog[bot]

This comment was marked as outdated.

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk merge

@trunk-io

trunk-io Bot commented Oct 3, 2026

Copy link
Copy Markdown

This PR is already queued as a stacked merge. Cancel it first to re-submit.

@hosthog

hosthog Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

HostHog preview — posthog-desktop-web

Latest build (2e1e67e): https://cce150a98b6a4431bb98abcce94785b2.hosthog.dev

Earlier builds of this PR, still serving:

Employee-gated; every push gets a fresh URL whose content never changes. All previews stop serving when the PR closes.

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk cancel

Generated-By: PostHog Desktop
Task-Id: 4ef04d0a-342e-45f7-a929-9856c235e586
@stamphog
stamphog Bot dismissed their stale review October 3, 2026 05:17

New commits were pushed — dismissing the stamphog approval from an earlier head. Re-add the trigger label to request a fresh review.

puemos added 2 commits October 3, 2026 07:25
…room

In a narrow scene the title keeps at least 12rem. The actions share its row when they fit, and wrap under it only when they do not.

Refs #111191

Generated-By: PostHog Desktop
Task-Id: 4ef04d0a-342e-45f7-a929-9856c235e586
Under today-rail-nav the thread, the loading skeleton and the reply box keep 16px side margins instead of running past both edges. On phones the task header drops its second back button, the reply box uses a short placeholder and larger send and stop buttons, and a task with no run shows an empty state with a Run task button.

Refs #111191

Generated-By: PostHog Desktop
Task-Id: 4ef04d0a-342e-45f7-a929-9856c235e586
@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
🛠️ Admin inspect & debug state in hogland
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit e27ce5c · box box-e839cf257de4 · ready in 636s (push → usable) · build log · rebuilds on every push, torn down on close

@puemos puemos changed the title feat(today): hide the phone tab bar while typing and drop tap flashes feat(today): make the task page and typing feel native on phones Oct 3, 2026

@stamphog stamphog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved.

Frontend-only layout, copy and CSS changes, and the change is behind a feature flag. It doesn't enter risky territory. The referenced logic values and button size exist, and the author is on the owning team.

  • Author wrote 18% of the modified lines and has 45 merged PRs in these paths (familiarity MODERATE).
Gate mechanics and policy version
Gate Result
prerequisites ✓ all clear
deny-list ✓ no deny categories matched
size ✓ 108L, 10F substantive — within ceiling
tier ✓ T1-agent / T1c-medium (108L, 10F, two-areas, feat)
stamphog 2.3.1 .stamphog/policy.yml @ 2e1e67e · reviewed head 2e1e67e

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk merge

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk cancel

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk merge

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk cancel

puemos commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

/trunk merge

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant