Bỏ qua để đến nội dung

STATE - Navigation Shell and Object Ownership

DomainsDOL EnglishProduct405 words2 min read
active

Logged-in DOL English is now program-first by default: the shell resumes into a real Program Workspace, while cross-program aggregation exists only as an explicit scope inside a few eligible views. Deep objects keep a canonical owner section and may appear elsewhere only as shortcuts.

  • Shell layers:
    • Public Discovery: pre-login browse and program/course exploration.
    • Program Workspace: one real program at a time for actual execution.
    • Selective Cross-program Aggregate Views: explicit multi-program scope inside eligible views only.
    • Deep Object: assignment, attempt, result, vocab item, AI feedback, or similar owner object.
  • Program Workspace:
    • always belongs to one real program,
    • uses task destinations as primary navigation,
    • keeps local tabs/switchers inside each destination rather than stacking multiple global rows.
  • Selective Cross-program Aggregate Views:
    • are not a standalone shell mode,
    • are not a peer program context,
    • start from confirmed use cases such as schedule / calendar,
    • default to current program scope first,
    • may expose All Programs only as an explicit scope toggle when needed.
  • Program switcher:
    • lists real programs only,
    • must not contain All Programs as a peer execution context,
    • changes current workspace context explicitly.
  • Default entry resolution after login:
    • valid returnTo -> exact protected target,
    • else last meaningful program workspace,
    • else if restore target is invalid -> same program root,
    • else if exactly one valid active program exists -> that program workspace,
    • else onboarding/program choice/discovery.
  • Canonical object ownership:
    • every deep object needs program, object_type, source, and canonical_section,
    • shortcut cards outside canonical owner can show the object but must read the same completion/progress state,
    • summary surfaces do not create duplicate object versions.
  • Cross-program deep links:
    • notification/search/deep-link may switch into another program only when target ownership requires it,
    • the switch must be visible in URL/state and UI context cues,
    • back behavior must follow explicit route history, not hidden shell state.
  • Logged-in naming guardrail:
    • use learner-centric, task-first labels,
    • avoid admin/module-centric wording in primary execution navigation.
  • Archived shell note:
    • the retired Global Today Hub / post-login overview model is historical only,
    • active docs must not treat it as current shell truth.
  • DEC-0011
  • DEC-0038
  • DEC-0065
  • DEC-0068
  • DEC-0070
  • DEC-0095
  • DEC-0096