Skip to content

chore: triage post-redesign backlog fixes (#554) - #978

Merged
thomasluizon merged 5 commits into
mainfrom
chore/ticket-554-backlog-triage
Sep 15, 2026
Merged

thomasluizon merged 5 commits into
mainfrom
chore/ticket-554-backlog-triage

Conversation

@thomasluizon

@thomasluizon thomasluizon commented Sep 15, 2026 •

Copy link
Copy Markdown
Owner

Closes thomasluizon/orbit-tickets#554

Summary

The live gate returned exactly 97 closed repo:ui and Bug tickets after the redesign fork cutoff. This PR ports every defect still reachable on main and records one terminal verdict for every result.

The finishing contract requires exactly one non-draft PR, so all ten coherent ports are grouped here. No PORT item remains delayed.

Verdicts

Counts: PORT 10, GONE 14, REDESIGN 15, HARNESS 58. Total 97.

Explicit exclusions

The live query did not include #552, #547, #548, #134, #550, or #553. They were excluded exactly as the work order requires.

Port delivery

Test evidence

Observed before implementation:

  • Shared focused suite: 6 failures and 44 passes across status contrast, button geometry, motion, and deadline-token coverage.
  • Overshoot lint rule: 1 failure and 171 passes before numeric-array detection was added.
  • Shell hydration proof failed before the server snapshot fix.
  • Stable dnd-kit source proof found 3 missing IDs.
  • Gradient source proof found 37 shipped offenders.
  • Markdown proofs failed for external targets and unsafe mobile link semantics.
  • fix(ui): date picker — constant height + year-skip arrows #310's old auth-stop assertion covered only the immediate flush. The strengthened 60-second assertion and no-progress timer proof cover the reachable loop.

Committed-state verification:

  • npm run type-check: 3 packages passed.
  • npm run lint in web: 0 errors.
  • npm run lint in mobile: 0 errors.
  • npm test: 4 packages passed.
  • Web: 283 files and 2,422 tests passed.
  • Mobile: 229 files and 1,495 tests passed.
  • Focused changed-path proofs: 293 tests passed before the full suite.
  • node tools/arch-map.mjs: completed; generated artifacts remain uncommitted per AGENTS.md.
  • Browser and end-to-end evidence were not gathered because the worker contract forbids browser, server, and E2E work.

Assumptions

The only assumption is PR grouping: the finishing contract requires exactly one PR, which overrides the work order's preference for multiple coherent PRs. No external response field was added or parsed by shipped code.

@vercel

vercel Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
orbit-ui-mobile-web Ignored Ignored Sep 15, 2026 9:38pm UTC

Request Review

@pullfrog pullfrog 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.

Caution

This PR can leave mobile offline changes permanently stranded and can resurrect pre-reset mutations after Fresh Start; the affected paths need correction before merge.

Reviewed changes Reviewed the complete 102-file diff that consolidates ten reachable backlog ports into the current main implementation.

  • Offline delivery and recovery Adds single-owner flushing, capped backoff, auth cancellation, orphan expiry, persisted dropped-mutation notices, and retry/create recovery actions.
  • Cross-platform visual cleanup Removes shipped gradients from web and mobile shell, celebration, upgrade, wrapped, onboarding, calendar, and share-card surfaces.
  • Accessibility and interaction fixes Adds semantic markdown links, external-link handling, corrected status text roles, and a compliant goal-deadline clear icon.
  • Runtime and shared behavior Stabilizes speech hydration and dnd-kit IDs, improves Astra action labels, adjusts button geometry, and expands no-overshoot lint coverage.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using GPT Sol | 𝕏

Comment thread apps/mobile/lib/offline-mutations.ts Outdated
Comment thread apps/mobile/stores/offline-sync-store.ts
Comment thread packages/shared/src/theme/neutral-ramp.ts
Comment thread apps/mobile/components/share/share-card.tsx Outdated
…log-triage

# Conflicts:
#	apps/mobile/__tests__/hooks/use-offline.test.tsx
#	apps/mobile/__tests__/lib/i18n-interpolation.test.ts
#	apps/mobile/__tests__/lib/offline-mutations.test.ts
#	apps/mobile/components/ui/app-toast.tsx
#	apps/mobile/hooks/use-offline.ts
#	apps/mobile/lib/offline-mutations.ts
#	apps/mobile/lib/providers.tsx
#	packages/shared/src/i18n/en.json
#	packages/shared/src/i18n/pt-BR.json

@pullfrog pullfrog 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.

✅ No new issues found.

The four findings from the prior review are addressed at this head: both mobile share-card bands use the semantic card surface, retained offline replay resumes after session recovery triggers, Fresh Start clears persisted recovery payloads, and web consumes the corrected status colors. Focused verification passed with 108 tests across 8 files plus the mobile type-check.

Pullfrog  | View workflow run | Using GPT Sol | 𝕏

@sonarqubecloud

Copy link
Copy Markdown

@thomasluizon
thomasluizon merged commit 76e0103 into main Sep 15, 2026
30 checks passed
@thomasluizon
thomasluizon deleted the chore/ticket-554-backlog-triage branch September 15, 2026 21:52
thomasluizon added a commit that referenced this pull request Sep 16, 2026
* fix(mobile): clear Play large screen warnings (#977)

* fix(mobile): support edge-to-edge large screens

* test(mobile): assert Today content column exists

* fix(mobile): isolate habit menu press target (#971)

* fix(mobile): isolate habit menu press target

* fix(mobile): preserve habit row press padding

* test(mobile): cover habit row press behavior

* test(mobile): assert habit row pressed state

* fix(mobile): preserve select row press area

* Fix Today completed habit filtering (#547) (#972)

* fix: scope completed habits to selected day

* fix: preserve completed general habits on today

* test: cover completed general habit visibility

* fix(mobile): restrict bulk selection to rendered habits

* test(mobile): keep selection harness typed

* fix(mobile): preserve toast edge gap

* fix: stop mobile offline sync spin (#552) (#973)

* fix: bound mobile offline sync retries (#552)

* fix: hydrate connectivity before offline replay (#552)

* fix: back off rejected offline flushes (#552)

* fix: settle offline retry timer failures (#552)

* fix: unify offline replay state (#552)

* fix: retain offline retry timer ownership (#552)

* chore: triage post-redesign backlog fixes (#554) (#978)

* chore: port reachable backlog fixes

* test: align backlog port coverage

* test: remove obsolete gradient assertion

* fix: resolve backlog port review findings

* feat: suggest habit emoji without changing form (#976)

* feat: suggest habit emoji without changing form

* fix: isolate emoji suggestion pending state

* fix: bind habit suggestions to form sessions

* fix: invalidate habit suggestions on unmount

* test: cover habit suggestion lifecycle

* fix: use Astra marker for habit suggestions

* fix(mobile): keep auth-stopped replay closed

* fix(web): refresh sessions silently (#974)

* fix(web): refresh sessions silently

* test(web): align refresh failure expectation

* fix(web): preserve retryable refreshed sessions

* fix(web): expose dedicated refresh failures

* fix(web): propagate terminal refresh failures

* test(web): exercise cross-instance refresh race

* test(shared): lock session copy split

* test(web): target wrapped account actions

* fix(web): confirm terminal session state

* fix(web): await session revalidation

* fix(web): recover inverse refresh races

* fix(web): recover successful server actions

* test(web): cover session-aware action boundary

* fix(web): route streak repair through the session boundary

repairStreakGap came from the raw Server Action module and was unwrapped by
hand, so a confirmed refresh rejection never reached the auth store.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix(web): stop inner catches swallowing session refresh failures

confirmApiKeyCreationChallenge and confirmDeletion caught every error
before wrapServerAction could read sessionRefreshFailed. Both rethrow it
now. The habit emoji selector also honours isDisabled on both platforms.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* test(mobile): await retry persistence report

* test(mobile): await retry error without fake timers

* test(mobile): stabilize retry error capture

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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