Skip to content

fix(today): announce dashboard empty states - #1638

Draft
seonghobae wants to merge 5 commits into
codex/desktop-navigation-widthfrom
codex/today-empty-live-regions
Draft

fix(today): announce dashboard empty states#1638
seonghobae wants to merge 5 commits into
codex/desktop-navigation-widthfrom
codex/today-empty-live-regions

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Current authority — 2026-09-10

  • canonical Today/navigation parent: #1608@72bfd55426602147277b543de6103cd4b88b7644
  • source-order RED: 586108e72210db707c34a0ab3339f5bc7189dabc
  • owner-preserving source integration: e54e46c3d46b30a1fe2af9ed6a3d4f8b3143e2f4
  • timer-polling repair: e7e8754b17754f3d85f25477424da9087bf8e9ec
  • exact head: 6e8c8919be264c0680d66f126d17da7f67071937
  • lifecycle: Draft / Today accessibility successor / do not merge yet
  • effective delta over fix(navigation): keep active destination visible #1608: exactly two files — one focused test plus three semantic attribute changes in WorkspaceHome.tsx.

Generated #1633 identified valid dynamic-empty-state announcement gaps but crossed the active Search and Today owner lanes. This successor keeps only the Today part on the current #1570#1578#1601#1608 ancestry. The three generated semantic hunks were isolated on protected-develop ancestry and integrated through ordinary Git three-way merge (#1639), preserving current Today recovery/unavailable-state behavior. No generated .jules metadata, dependency source, Search source, or stale dashboard source is effective here.

RED 586108e... holds /api/emails, /api/emails/pending-replies?limit=3, and /api/tasks pending, verifies visible loading states, then requires 답변 대기 중인 보낸 메일이 없습니다., 대기 작업이 없습니다., and 수신된 메일이 없습니다. each to become role="status" with aria-live="polite" after completion.

CodeRabbit found that the predecessor harness used real zero-delay timer polling; e7e8754... removed that timing dependency. Fresh static re-review found a second evidence defect: its resolve() helper resolved the HTTP response and JSON body in the same call, so the test could not prove that the dashboard remains in loading after the response object arrives but while response.json() is still pending. Exact 6e8c891... changes only the focused test: each endpoint now has separate resolveResponse() and resolveBody() controls. The test first resolves all response objects and proves all three loading states remain with no empty live region, then resolves/awaits the exact body promises and requires the three polite status regions. WorkspaceHome.tsx is unchanged by this repair.

Exact-head evidence boundary

This feature-base stacked PR cannot currently materialize Naruon’s repository-local Application CI/Bandit through ordinary pull_request synchronization because their protected workflow filters name only default/release bases. Canonical fleet defect .github#2073 owns the repair. Do not retarget this PR to develop, push a dummy commit, copy central workflow source, or transfer predecessor checks. Any predecessor analysis/review is stale after the test-only source change; 6e8c891... requires fresh exact-head execution and independent review.

UI Delivery Gate: FAIL

Intentionality, content ownership, and source-level functional completeness are PASS. Exact-head hosted execution is absent until the canonical stacked-PR CI path is repaired, qualifying independent current-head review is absent, and browser/AT/keyboard evidence remains incomplete. No broad accessibility-conformance claim is authorized; #1608 and its prerequisites are not protected-integrated.

No force-push, destructive rebase, self-approval, historical-check transfer, cross-owner source copy, or gate weakening.

Add a focused asynchronous loading-to-empty regression on the current Today/navigation ancestry. The unchanged source renders the three primary empty states without status live-region semantics, so this commit is the source-order RED.

Signed-off-by: Seongho Bae <me@seonghobae.me>
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 11 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 8976a121-ccdf-45ef-a171-4de4208bf249

📥 Commits

Reviewing files that changed from the base of the PR and between 72bfd55 and 6e8c891.

📒 Files selected for processing (2)
  • frontend/src/components/WorkspaceHome.empty-live-region.test.tsx
  • frontend/src/components/WorkspaceHome.tsx

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Isolate only the three generated WorkspaceHome live-region changes on protected-develop ancestry so Git can perform an ordinary three-way integration into the active Today owner without copying stale dashboard source.

Signed-off-by: Seongho Bae <me@seonghobae.me>
Ordinary three-way integration of the three live-region changes into the active #1608 successor. Preserve the focused RED test and all existing Today/navigation source.
@seonghobae seonghobae changed the title test(today): require dashboard empty-state live announcements fix(today): announce dashboard empty states Sep 10, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Review current exact head e54e46c3d46b30a1fe2af9ed6a3d4f8b3143e2f4 against exact base 72bfd55426602147277b543de6103cd4b88b7644. Scope only frontend/src/components/WorkspaceHome.tsx and frontend/src/components/WorkspaceHome.empty-live-region.test.tsx. Verify the effective source delta is exactly three polite status live-region additions, the deferred loading→empty regression is deterministic, existing unavailable/error branches stay distinguishable from empty, current Today recovery/navigation behavior is preserved, and no stale generated #1633 source survives.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="72bfd55426602147277b543de6103cd4b88b7644"
head="e54e46c3d46b30a1fe2af9ed6a3d4f8b3143e2f4"
component="frontend/src/components/WorkspaceHome.tsx"
test_file="frontend/src/components/WorkspaceHome.empty-live-region.test.tsx"

echo "== Exact commits =="
git show -s --format='BASE  %H%n%s%n%an <%ae>%n%ad' --date=iso-strict "$base"
git show -s --format='HEAD  %H%n%s%n%an <%ae>%n%ad' --date=iso-strict "$head"

echo
echo "== Complete effective name-status delta =="
git diff --name-status "$base" "$head"

echo
echo "== Scoped effective patch =="
git diff --no-ext-diff --unified=80 "$base" "$head" -- "$component" "$test_file"

echo
echo "== Component outline at exact head =="
git show "$head:$component" > /tmp/WorkspaceHome.tsx
ast-grep outline /tmp/WorkspaceHome.tsx --items all || true

echo
echo "== Focused test outline at exact head =="
git show "$head:$test_file" > /tmp/WorkspaceHome.empty-live-region.test.tsx
ast-grep outline /tmp/WorkspaceHome.empty-live-region.test.tsx --items all || true

echo
echo "== State and navigation references in component at exact head =="
grep -nE -C 4 \
  'role=|aria-live|답변 대기|대기 작업|수신된 메일|loading|Loading|error|Error|unavailable|Unavailable|retry|Retry|navigate|router|href|onClick' \
  /tmp/WorkspaceHome.tsx || true

echo
echo "== Deferred request and assertion references in focused test at exact head =="
grep -nE -C 5 \
  'defer|Promise|resolve|reject|/api/emails|pending-replies|/api/tasks|waitFor|status|aria-live|답변 대기|대기 작업|수신된 메일|loading|Loading|error|Error|unavailable|Unavailable' \
  /tmp/WorkspaceHome.empty-live-region.test.tsx || true

echo
echo "== Search for stale generated `#1633` markers or stale dashboard test/source references in effective delta =="
git diff --no-ext-diff "$base" "$head" | grep -nE -i -C 2 \
  '1633|jules|workspacehome|dashboard|empty-live-region' || true

Length of output: 76599


@seonghobae I found one issue.

waitForCondition in frontend/src/components/WorkspaceHome.empty-live-region.test.tsx uses a fixed limit of 20 real zero-delay timers. A slow or loaded test runner can exhaust this limit before React commits the resolved responses. The test can then fail intermittently without a product regression.

Use the test framework wait utility, or explicitly flush the deferred promise chain inside act, instead of bounded real-timer polling. This change makes the loading-to-empty regression deterministic.

The effective source delta otherwise contains only the two specified files. WorkspaceHome.tsx contains exactly the three intended polite status additions. The loading and unavailable branches remain distinct from the empty branches. The retry, authentication, startup-view, and navigation behavior has no effective diff. I found no stale generated #1633 source in the effective delta.

You are interacting with an AI system.

Repair the current review finding by removing bounded real-timer polling from the dashboard loading-to-empty regression. Resolve and await the controlled response/body promises inside React act so runner speed cannot exhaust a fixed retry loop. Product source remains unchanged.

Signed-off-by: Seongho Bae <me@seonghobae.me>

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Re-review current exact head e7e8754b17754f3d85f25477424da9087bf8e9ec against exact base 72bfd55426602147277b543de6103cd4b88b7644. Scope only frontend/src/components/WorkspaceHome.tsx and frontend/src/components/WorkspaceHome.empty-live-region.test.tsx. Verify the valid timer-polling finding from predecessor e54e46c... is repaired: the test resolves and awaits the controlled response/body promises inside React act with no bounded real-timer polling. Also verify the effective product source remains exactly three polite status additions, unavailable/error branches stay distinct, Today recovery/navigation behavior is preserved, and no stale generated #1633 source survives.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="72bfd55426602147277b543de6103cd4b88b7644"
head="e7e8754b17754f3d85f25477424da9087bf8e9ec"
component="frontend/src/components/WorkspaceHome.tsx"
test_file="frontend/src/components/WorkspaceHome.empty-live-region.test.tsx"

git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"

echo "== Effective file delta =="
git diff --name-status "$base" "$head"

echo "== Effective scoped patch =="
git diff --no-ext-diff --unified=60 "$base" "$head" -- "$component" "$test_file"

echo "== Component outline at head =="
git show "$head:$component" > /tmp/WorkspaceHome.tsx
ast-grep outline /tmp/WorkspaceHome.tsx --items all || true

echo "== Focused test outline at head =="
git show "$head:$test_file" > /tmp/WorkspaceHome.empty-live-region.test.tsx
ast-grep outline /tmp/WorkspaceHome.empty-live-region.test.tsx --items all || true

echo "== Component empty/loading/error/navigation contexts =="
rg -n -C 8 \
  'role=|aria-live|답변 대기 중인 보낸 메일이 없습니다\.|대기 작업이 없습니다\.|수신된 메일이 없습니다\.|loading|Loading|error|Error|unavailable|Unavailable|retry|Retry|navigate|router|href|onClick' \
  /tmp/WorkspaceHome.tsx || true

echo "== Test controlled-promise and act contexts =="
git show "$head:$test_file" > /tmp/WorkspaceHome.empty-live-region.test.tsx
rg -n -C 8 \
  'act|Promise|resolve|json|/api/emails|pending-replies|/api/tasks|waitForCondition|setTimeout|setInterval|role|aria-live|답변 대기|대기 작업|수신된 메일' \
  /tmp/WorkspaceHome.empty-live-region.test.tsx || true

echo "== Bounded polling indicators in focused test =="
rg -n -C 3 'setTimeout|setInterval|waitForCondition|for\s*\(|while\s*\(|20|delay|timer' \
  /tmp/WorkspaceHome.empty-live-region.test.tsx || true

echo "== Stale generated-source indicators in effective delta =="
git diff --no-ext-diff "$base" "$head" | rg -n -i -C 3 '1633|jules|generated|dashboard' || true

Length of output: 83909


@seonghobae No issue found.

The effective delta contains only the requested two files.

WorkspaceHome.tsx contains exactly three product changes. Each requested empty-state element now has role="status" and aria-live="polite".

The unavailable branches remain before and distinct from the empty branches. The effective component diff does not change Today recovery, startup-view selection, or navigation behavior.

The focused test resolves and awaits all controlled response and JSON-body promises inside asynchronous React act. It contains no waitForCondition, bounded polling, or real timer loop.

I found no stale generated #1633 source or .jules marker in the effective delta.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

현재 exact head e7e8754b17754f3d85f25477424da9087bf8e9ec만 독립 검토해 주세요. Base는 #1608@72bfd55426602147277b543de6103cd4b88b7644이며 effective delta는 WorkspaceHome.empty-live-regions.test.tsxWorkspaceHome.tsx 두 파일뿐입니다. predecessor e54e46c...에서 지적된 real-timer polling은 제거됐으므로, controlled response/body promise가 React act 안에서 실제 async loading→empty transition을 결정적으로 flush하는지, 기존 unavailable/error branches를 건드리지 않는지, 세 empty state의 role="status"/aria-live="polite"가 정확한지 확인해 주세요. 이전 head 분석은 current-head 승인으로 승계하지 않습니다.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="72bfd55426602147277b543de6103cd4b88b7644"
head="e7e8754b17754f3d85f25477424da9087bf8e9ec"
component="frontend/src/components/WorkspaceHome.tsx"

git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"

echo "== Exact commits =="
git show -s --format='%H%n%s%n%an <%ae>%n%ad' --date=iso-strict "$base"
git show -s --format='%H%n%s%n%an <%ae>%n%ad' --date=iso-strict "$head"

echo "== Effective file delta =="
git diff --name-status "$base" "$head"

echo "== Candidate focused test paths at exact head =="
git ls-tree -r --name-only "$head" | rg '(^|/)WorkspaceHome\.empty-live-regions?\.test\.tsx$' || true

test_file="$(git diff --name-only "$base" "$head" | rg '(^|/)WorkspaceHome\.empty-live-regions?\.test\.tsx$' | head -n 1)"
test -n "$test_file"
echo "== Selected test file =="
printf '%s\n' "$test_file"

echo "== Complete scoped patch =="
git diff --no-ext-diff --unified=80 "$base" "$head" -- "$component" "$test_file"

git show "$head:$component" > /tmp/WorkspaceHome.tsx
git show "$head:$test_file" > /tmp/WorkspaceHome.empty-live-region.test.tsx

echo "== Component structure =="
ast-grep outline /tmp/WorkspaceHome.tsx --items all || true

echo "== Focused test structure =="
ast-grep outline /tmp/WorkspaceHome.empty-live-region.test.tsx --items all || true

echo "== Component empty, loading, unavailable/error, and navigation contexts =="
rg -n -C 10 \
  'role=|aria-live|답변 대기 중인 보낸 메일이 없습니다\.|대기 작업이 없습니다\.|수신된 메일이 없습니다\.|loading|Loading|unavailable|Unavailable|error|Error|retry|Retry|navigate|router|href|onClick' \
  /tmp/WorkspaceHome.tsx || true

echo "== Test promise, act, fetch, assertion, and timer contexts =="
rg -n -C 12 \
  'act|Promise|resolve|reject|json|fetch|/api/emails|pending-replies|/api/tasks|waitForCondition|setTimeout|setInterval|role|aria-live|답변 대기|대기 작업|수신된 메일' \
  /tmp/WorkspaceHome.empty-live-region.test.tsx || true

echo "== Polling and real-timer indicators =="
rg -n -C 4 'waitForCondition|setTimeout|setInterval|requestAnimationFrame|for\s*\(|while\s*\(|timer|delay' \
  /tmp/WorkspaceHome.empty-live-region.test.tsx || true

echo "== Stale generated-source indicators in exact effective diff =="
git diff --no-ext-diff "$base" "$head" | rg -n -i -C 3 '1633|jules|generated|dashboard' || true

Length of output: 90470


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="72bfd55426602147277b543de6103cd4b88b7644"
head="e7e8754b17754f3d85f25477424da9087bf8e9ec"

echo "== Locate API client =="
fd -a '^api-client\.(ts|tsx|js|jsx)$' frontend/src || true

api_file="$(fd -a '^api-client\.(ts|tsx|js|jsx)$' frontend/src | head -n 1)"
test -n "$api_file"

echo "== API client outline =="
ast-grep outline "$api_file" --items all || true

echo "== API client fetch, JSON, get, and response-validation contexts =="
rg -n -C 14 \
  'fetch\s*\(|\.json\s*\(|async\s+get|async\s+request|class .*Api|const apiClient|export.*apiClient|throw|ok\b' \
  "$api_file" || true

echo "== Exact component changed-line count and patch =="
git diff --numstat "$base" "$head" -- frontend/src/components/WorkspaceHome.tsx
git diff --no-ext-diff --unified=3 "$base" "$head" -- frontend/src/components/WorkspaceHome.tsx

echo "== Exact test changed-line count and full source with line numbers =="
git diff --numstat "$base" "$head" -- frontend/src/components/WorkspaceHome.empty-live-region.test.tsx
git show "$head:frontend/src/components/WorkspaceHome.empty-live-region.test.tsx" | nl -ba

Length of output: 16375


@seonghobae 검토 완료했습니다. 문제를 찾지 못했습니다.

정확한 effective delta는 다음 두 파일입니다.

  • frontend/src/components/WorkspaceHome.empty-live-region.test.tsx
  • frontend/src/components/WorkspaceHome.tsx

참고로 exact head의 테스트 파일 이름은 WorkspaceHome.empty-live-region.test.tsx입니다. 요청에 적힌 empty-live-regions 파일은 존재하지 않습니다.

테스트는 세 controlled response와 세 JSON-body promise를 비동기 React act 안에서 resolve하고 await합니다. apiClient.get()은 fetch response를 await한 뒤 response.json()을 반환합니다. 따라서 테스트는 실제 loading→empty 비동기 경로를 제어합니다. waitForCondition, real timer, bounded polling은 없습니다.

WorkspaceHome.tsx의 product diff는 정확히 세 줄입니다. 다음 empty state는 각각 role="status"aria-live="polite"를 가집니다.

  • 답변 대기 중인 보낸 메일이 없습니다.
  • 대기 작업이 없습니다.
  • 수신된 메일이 없습니다.

각 unavailable branch는 해당 empty branch보다 먼저 유지됩니다. unavailable/error 처리, retry, Today recovery, startup-view 선택, navigation에는 effective diff가 없습니다. exact effective delta에서 stale generated #1633 source 또는 .jules marker도 찾지 못했습니다.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@codex review

Please review only exact e7e8754b17754f3d85f25477424da9087bf8e9ec against base 72bfd55426602147277b543de6103cd4b88b7644. Focus on the two-file Today async loading→empty live-region delta, the repaired controlled response/body promises inside React act, preservation of unavailable/error branches, and whether the three polite status regions are correctly scoped. Do not transfer predecessor approval or broaden scope.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review only current exact head 6e8c8919be264c0680d66f126d17da7f67071937 against base #1608@72bfd55426602147277b543de6103cd4b88b7644. Focus on the two-file effective delta, especially whether the test now proves the UI remains in loading after the HTTP response object resolves but while each json() body promise is still pending, then announces only the three intended empty states. Do not transfer predecessor review evidence.

Copy link
Copy Markdown
Contributor Author

@codex review

Review current exact head 6e8c8919be264c0680d66f126d17da7f67071937 only. Verify the two-file Today accessibility delta, separate response/body lifecycle control, preserved error/unavailable branches, React act usage, and absence of stale Search/dependency owner source. Treat all predecessor reviews as stale.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="72bfd55426602147277b543de6103cd4b88b7644"
head="6e8c8919be264c0680d66f126d17da7f67071937"
component="frontend/src/components/WorkspaceHome.tsx"

git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"

echo "== Exact commits =="
git show -s --format='BASE %H%n%s%n%ad' --date=iso-strict "$base"
git show -s --format='HEAD %H%n%s%n%ad' --date=iso-strict "$head"

echo
echo "== Complete effective delta =="
git diff --name-status "$base" "$head"

echo
echo "== Locate focused test in effective delta =="
test_file="$(git diff --name-only "$base" "$head" | rg '(^|/)WorkspaceHome\.empty-live-regions?\.test\.tsx$' | head -n 1)"
test -n "$test_file"
printf '%s\n' "$test_file"

echo
echo "== Complete two-file patch =="
git diff --no-ext-diff --unified=100 "$base" "$head" -- "$component" "$test_file"

git show "$head:$component" > /tmp/WorkspaceHome.tsx
git show "$head:$test_file" > /tmp/WorkspaceHome.empty-live-region.test.tsx

echo
echo "== Component outline =="
ast-grep outline /tmp/WorkspaceHome.tsx --items all || true

echo
echo "== Focused test outline =="
ast-grep outline /tmp/WorkspaceHome.empty-live-region.test.tsx --items all || true

echo
echo "== Full focused test at exact head =="
nl -ba /tmp/WorkspaceHome.empty-live-region.test.tsx

echo
echo "== Component state, live-region, and navigation contexts =="
rg -n -C 12 \
  'role=|aria-live|답변 대기 중인 보낸 메일이 없습니다\.|대기 작업이 없습니다\.|수신된 메일이 없습니다\.|loading|Loading|unavailable|Unavailable|error|Error|retry|Retry|navigate|router|href|onClick' \
  /tmp/WorkspaceHome.tsx || true

echo
echo "== Controlled-response/body, intermediate assertion, act, and timer contexts =="
rg -n -C 12 \
  'act|Promise|resolveResponse|resolveBody|response|json|fetch|/api/emails|pending-replies|/api/tasks|loading|Loading|role|aria-live|setTimeout|setInterval|waitForCondition' \
  /tmp/WorkspaceHome.empty-live-region.test.tsx || true

echo
echo "== Locate API client and inspect response-to-body await sequence =="
api_file="$(fd -a '^api-client\.(ts|tsx|js|jsx)$' frontend/src | head -n 1)"
test -n "$api_file"
printf '%s\n' "$api_file"
ast-grep outline "$api_file" --items all || true
rg -n -C 12 'fetch\s*\(|\.json\s*\(|async\s+get|async\s+request|throw|ok\b' "$api_file" || true

echo
echo "== Effective-diff markers for out-of-scope or generated source =="
git diff --no-ext-diff "$base" "$head" | rg -n -i -C 3 \
  '1633|jules|generated|dashboard|search|WorkspaceHome' || true

Length of output: 110530


@seonghobae No issue found in exact head 6e8c8919be264c0680d66f126d17da7f67071937.

The effective delta contains exactly these two files:

  • frontend/src/components/WorkspaceHome.empty-live-region.test.tsx
  • frontend/src/components/WorkspaceHome.tsx

The test separately controls each HTTP response promise and each response.json() body promise.

After the test resolves and awaits only the three response promises inside act, each ApiClient.get() remains pending on response.json(). The test then confirms that all three loading messages remain visible. It also confirms that none of the three empty-state status regions exists at that intermediate point.

After the test resolves and awaits the three body promises inside act, it confirms that all three intended empty states exist and have aria-live="polite":

  • 답변 대기 중인 보낸 메일이 없습니다.
  • 대기 작업이 없습니다.
  • 수신된 메일이 없습니다.

WorkspaceHome.tsx adds role="status" and aria-live="polite" only to those three empty-state elements. Each affected branch still evaluates loading first, unavailable second, and empty third. The unavailable and error behavior is unchanged.

The effective component diff does not change Today recovery, startup-view behavior, or navigation. The exact delta contains no stale generated #1633 source or .jules metadata.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

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