docs(p0): compact MVP spec for Android Oboe focus
This commit is contained in:
@@ -1,84 +0,0 @@
|
||||
|
||||
# Chanora Adaptive Layout and Platform Behavior Guide
|
||||
|
||||
**Version:** 0.9.2
|
||||
**Status:** Baseline Candidate
|
||||
**Language:** English
|
||||
|
||||
**Repo path:** `docs/ui-ux/adaptive-layout-platform-guide.md` ---
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This guide defines adaptive layout and platform behavior for the Chanora Flutter application.
|
||||
|
||||
## 2. Window Classes
|
||||
|
||||
| Class | Width | Layout |
|
||||
|---|---:|---|
|
||||
| Compact | `< 600dp` | Single-column content with mobile navigation |
|
||||
| Medium | `600dp - 839dp` | Navigation rail or side navigation with main content |
|
||||
| Expanded | `>= 840dp` | Persistent side pane, main pane, and persistent VoiceBar |
|
||||
|
||||
## 3. Compact Layout
|
||||
|
||||
- Use one primary content area.
|
||||
- Keep VoiceBar visible or directly reachable.
|
||||
- Keep connection status visible.
|
||||
- Use bottom navigation for primary destinations.
|
||||
- Avoid multi-pane assumptions.
|
||||
|
||||
## 4. Medium Layout
|
||||
|
||||
- Use navigation rail or equivalent side navigation.
|
||||
- Keep primary content and VoiceBar available.
|
||||
- Use dialogs or side panels depending on width.
|
||||
|
||||
## 5. Expanded Layout
|
||||
|
||||
- Use persistent side pane for server/channel navigation.
|
||||
- Use main pane for chat, details, or current feature content.
|
||||
- Keep VoiceBar persistent.
|
||||
- Support pointer, keyboard, hover, and context menus.
|
||||
|
||||
## 6. Android Platform Behavior
|
||||
|
||||
- Runtime permissions must be explained before request where appropriate.
|
||||
- System back behavior is handled as a back intent.
|
||||
- Predictive back compatibility should be considered where supported.
|
||||
- Bluetooth and audio routing are handled by platform services.
|
||||
- Foreground voice behavior is handled according to Android platform rules.
|
||||
|
||||
## 7. iOS Platform Behavior
|
||||
|
||||
- Microphone permission must be explained before request where platform guidelines allow.
|
||||
- Safe area, home indicator, keyboard avoidance, and route changes must be respected.
|
||||
- Audio session behavior must be handled through platform audio services.
|
||||
- Haptics should be restrained and meaningful.
|
||||
|
||||
## 8. Desktop Platform Behavior
|
||||
|
||||
- Keyboard traversal is required for primary controls.
|
||||
- Tooltips and hover states should be supported.
|
||||
- Context menus should be supported for channel tree, client rows, and bookmarks.
|
||||
- Window resizing must not break critical controls.
|
||||
- Diagnostics export must use platform-appropriate file handling.
|
||||
|
||||
## 9. Change History
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.1.0 | 2026-05-14 | Initial adaptive layout and platform behavior guide. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.1 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.1 | 2026-05-14 | Updated baseline after product decision closure: Apple App Store SDK gate uses Xcode 26+ and iOS 26 / iPadOS 26 SDK+ since 2026-04-28, platform baselines and decision traceability propagated across the document set. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.2 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.2 | 2026-05-14 | Corrected Apple App Store Connect upload gate to 2026-04-28 and checked full-package naming, references, and coverage. |
|
||||
@@ -1,105 +0,0 @@
|
||||
|
||||
# Chanora Component Catalog — Material 3 Baseline
|
||||
|
||||
**Version:** 0.9.2
|
||||
**Status:** Baseline Candidate
|
||||
**Language:** English
|
||||
|
||||
**Repo path:** `docs/ui-ux/material3-component-catalog.md` ---
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This catalog defines Chanora UI components that sit above Material 3 widgets. Components shall consume design tokens and expose accessible, testable APIs.
|
||||
|
||||
## 2. Core Components
|
||||
|
||||
| Component | Stage | Responsibility |
|
||||
|---|---|---|
|
||||
| `ChanoraAdaptiveShell` | P0 | Layout and navigation shell for compact, medium, expanded classes |
|
||||
| `ChanoraVoiceBar` | P0 | Persistent voice controls |
|
||||
| `ChanoraChannelTree` | P0 | Hierarchical channel and client browser |
|
||||
| `ChanoraClientTile` | P0 | Client display row |
|
||||
| `ChanoraStatusBadge` | P0 | Connection, voice, latency, and diagnostic status |
|
||||
| `ChanoraAudioMeter` | P0 | Input audio level indicator |
|
||||
| `ChanoraConnectionBanner` | P0 | Connection, reconnect, and error feedback |
|
||||
| `ChanoraSettingsSection` | P0 | Settings grouping |
|
||||
| `ChanoraDiagnosticPanel` | P0 | Diagnostics status and export entry |
|
||||
| `ChanoraContextMenuAnchor` | P1 | Desktop and tablet context menu behavior |
|
||||
|
||||
## 3. Component API Requirements
|
||||
|
||||
### `ChanoraVoiceBar`
|
||||
|
||||
Required properties:
|
||||
|
||||
- connected status
|
||||
- current channel name
|
||||
- microphone muted state
|
||||
- output deafened state
|
||||
- push-to-talk active state
|
||||
- input level
|
||||
- latency summary
|
||||
- localized labels
|
||||
- callbacks for mute, deaf, push-to-talk, and settings
|
||||
|
||||
### `ChanoraChannelTree`
|
||||
|
||||
Required properties:
|
||||
|
||||
- root channel nodes
|
||||
- expanded channel IDs
|
||||
- selected channel ID
|
||||
- current voice channel ID
|
||||
- client node list
|
||||
- speaking client IDs
|
||||
- join-channel callback
|
||||
- context-menu callback
|
||||
- keyboard traversal support
|
||||
|
||||
### `ChanoraStatusBadge`
|
||||
|
||||
Required properties:
|
||||
|
||||
- state
|
||||
- label
|
||||
- icon
|
||||
- semantic label
|
||||
- optional severity
|
||||
- optional tooltip
|
||||
|
||||
### `ChanoraAudioMeter`
|
||||
|
||||
Required properties:
|
||||
|
||||
- level
|
||||
- disabled state
|
||||
- semantic value
|
||||
- reduced-motion mode
|
||||
|
||||
## 4. Accessibility Rules
|
||||
|
||||
- Icon-only controls require semantic labels.
|
||||
- Status components must not rely on color only.
|
||||
- Components must support focus where interactive.
|
||||
- Components must preserve touch target size where practical.
|
||||
- Components must be testable through widget tests.
|
||||
|
||||
## 5. Change History
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.1.0 | 2026-05-14 | Initial Chanora component catalog. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.1 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.1 | 2026-05-14 | Updated baseline after product decision closure: Apple App Store SDK gate uses Xcode 26+ and iOS 26 / iPadOS 26 SDK+ since 2026-04-28, platform baselines and decision traceability propagated across the document set. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.2 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.2 | 2026-05-14 | Corrected Apple App Store Connect upload gate to 2026-04-28 and checked full-package naming, references, and coverage. |
|
||||
@@ -1,120 +0,0 @@
|
||||
|
||||
# Chanora Design Tokens — Material 3 Baseline
|
||||
|
||||
**Version:** 0.9.2
|
||||
**Status:** Baseline Candidate
|
||||
**Language:** English
|
||||
|
||||
**Repo path:** `docs/ui-ux/material3-design-tokens.md` ---
|
||||
|
||||
## 1. Token Strategy
|
||||
|
||||
Chanora uses Material 3 tokens as the foundation and adds Chanora semantic tokens for voice-client-specific states.
|
||||
|
||||
```text
|
||||
Material 3 ColorScheme / TextTheme / Shape / Motion
|
||||
-> Chanora Semantic Tokens
|
||||
-> Chanora Components
|
||||
-> Feature Screens
|
||||
```
|
||||
|
||||
## 2. Token Groups
|
||||
|
||||
| Group | Purpose |
|
||||
|---|---|
|
||||
| `chanora.color.connection.*` | Connection status |
|
||||
| `chanora.color.voice.*` | Voice states |
|
||||
| `chanora.color.latency.*` | Latency and packet-loss status |
|
||||
| `chanora.color.diagnostics.*` | Diagnostic severity |
|
||||
| `chanora.spacing.*` | Layout spacing |
|
||||
| `chanora.shape.*` | Corners and component shapes |
|
||||
| `chanora.motion.*` | Motion duration and reduced-motion behavior |
|
||||
| `chanora.density.*` | Mobile, tablet, desktop density |
|
||||
| `chanora.typography.*` | Product role mapping to Material type roles |
|
||||
|
||||
## 3. Color Tokens
|
||||
|
||||
| Token | Purpose |
|
||||
|---|---|
|
||||
| `chanora.color.connection.connected` | Connected state |
|
||||
| `chanora.color.connection.connecting` | Connection in progress |
|
||||
| `chanora.color.connection.reconnecting` | Recovering connection |
|
||||
| `chanora.color.connection.disconnected` | Disconnected state |
|
||||
| `chanora.color.connection.error` | Connection failure |
|
||||
| `chanora.color.voice.speaking` | User is speaking |
|
||||
| `chanora.color.voice.muted` | Microphone muted |
|
||||
| `chanora.color.voice.deafened` | Output deafened |
|
||||
| `chanora.color.voice.pttActive` | Push-to-talk active |
|
||||
| `chanora.color.latency.good` | Good latency |
|
||||
| `chanora.color.latency.warning` | Warning latency |
|
||||
| `chanora.color.latency.bad` | Bad latency |
|
||||
| `chanora.color.diagnostics.info` | Informational diagnostic |
|
||||
| `chanora.color.diagnostics.warning` | Warning diagnostic |
|
||||
| `chanora.color.diagnostics.error` | Error diagnostic |
|
||||
|
||||
## 4. Typography Mapping
|
||||
|
||||
| Product role | Material 3 type role |
|
||||
|---|---|
|
||||
| App title | `headlineSmall` |
|
||||
| Server name | `titleLarge` |
|
||||
| Channel name | `bodyLarge` |
|
||||
| Client nickname | `bodyLarge` |
|
||||
| Status secondary text | `bodyMedium` |
|
||||
| Diagnostic metadata | `bodySmall` |
|
||||
| Button label | `labelLarge` |
|
||||
| Badge label | `labelMedium` |
|
||||
|
||||
## 5. Spacing Tokens
|
||||
|
||||
| Token | Value |
|
||||
|---|---:|
|
||||
| `chanora.spacing.xs` | 4 |
|
||||
| `chanora.spacing.sm` | 8 |
|
||||
| `chanora.spacing.md` | 12 |
|
||||
| `chanora.spacing.lg` | 16 |
|
||||
| `chanora.spacing.xl` | 24 |
|
||||
| `chanora.spacing.2xl` | 32 |
|
||||
|
||||
## 6. Shape Tokens
|
||||
|
||||
| Token | Use |
|
||||
|---|---|
|
||||
| `chanora.shape.sm` | Small chips, compact controls |
|
||||
| `chanora.shape.md` | Cards and list containers |
|
||||
| `chanora.shape.lg` | Panels and navigation surfaces |
|
||||
| `chanora.shape.xl` | Dialogs and sheets |
|
||||
| `chanora.shape.full` | Pills, badges, icon buttons |
|
||||
|
||||
## 7. Motion Tokens
|
||||
|
||||
| Token | Purpose |
|
||||
|---|---|
|
||||
| `chanora.motion.quick` | Small feedback |
|
||||
| `chanora.motion.standard` | Normal UI transition |
|
||||
| `chanora.motion.emphasized` | Major layout transition |
|
||||
| `chanora.motion.reduced` | Reduced-motion fallback |
|
||||
|
||||
## 8. Flutter Implementation Requirement
|
||||
|
||||
Tokens should be exposed through `ThemeData`, `ColorScheme`, component themes, and `ThemeExtension`. Feature screens shall not hardcode product semantic token values.
|
||||
|
||||
## 9. Change History
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.1.0 | 2026-05-14 | Initial design token baseline. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.1 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.1 | 2026-05-14 | Updated baseline after product decision closure: Apple App Store SDK gate uses Xcode 26+ and iOS 26 / iPadOS 26 SDK+ since 2026-04-28, platform baselines and decision traceability propagated across the document set. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.2 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.2 | 2026-05-14 | Corrected Apple App Store Connect upload gate to 2026-04-28 and checked full-package naming, references, and coverage. |
|
||||
@@ -1,93 +0,0 @@
|
||||
|
||||
# Chanora UI/UX Guideline — Material 3 Baseline
|
||||
|
||||
**Version:** 0.9.2
|
||||
**Status:** Baseline Candidate
|
||||
**Language:** English
|
||||
**Lifecycle support:** Supports SysDes, SRS, SAD, SDD, and Verification
|
||||
**Design baseline:** Material 3 + Chanora Design System
|
||||
|
||||
**Repo path:** `docs/ui-ux/material3-guideline.md` ---
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This guideline defines the UI and UX baseline for the Chanora Flutter application. Chanora shall use Material 3 as the foundation, but product-specific voice, channel, connection, latency, diagnostics, platform, and accessibility semantics shall be expressed through Chanora Design System components and tokens.
|
||||
|
||||
## 2. Core UI Principles
|
||||
|
||||
| Principle | Requirement |
|
||||
|---|---|
|
||||
| Voice-first control | Mute, deaf, push-to-talk, current channel, and input status must be visible or directly reachable. |
|
||||
| Connection awareness | Connected, connecting, reconnecting, disconnected, and error states must be visible. |
|
||||
| Adaptive layout | Layout must adapt by window class rather than hardcoding behavior by platform name. |
|
||||
| Accessibility baseline | Critical controls must have semantics, focus behavior, text scaling support, and non-color-only status expression. |
|
||||
| Platform respect | Permission, safe area, keyboard, back, haptic, and audio-route behavior must follow platform expectations. |
|
||||
| Localization-ready | Product-owned strings must be localized; server-provided content must be displayed as content. |
|
||||
|
||||
## 3. Primary Screens
|
||||
|
||||
| Screen | Stage | Purpose |
|
||||
|---|---|---|
|
||||
| Home | P0 | Recent servers, bookmarks, manual connect entry |
|
||||
| Connect | P0 | Host, port, nickname, password, identity selection |
|
||||
| Server | P0 | Channel tree, clients, connection status, current channel |
|
||||
| Voice | P0 | Voice controls, input level, device summary |
|
||||
| Chat | P1 | Channel text messages |
|
||||
| Settings | P0 | Audio, UI, localization, platform behavior, shortcuts |
|
||||
| Diagnostics | P0 | Status, redacted export, troubleshooting information |
|
||||
|
||||
## 4. Interaction Rules
|
||||
|
||||
| Area | Rule |
|
||||
|---|---|
|
||||
| Channel tree | Select, expand/collapse, join, context menu, keyboard traversal |
|
||||
| Client tile | Show speaking, mute/deaf, volume, latency when available |
|
||||
| Voice controls | Must be reachable with touch, mouse, and keyboard |
|
||||
| Diagnostics | Export must require explicit user action and show redaction notice |
|
||||
| Settings | Destructive or permission-changing actions require clear confirmation or explanation |
|
||||
| Text entry | Chat input must respect IME and keyboard safe areas |
|
||||
|
||||
## 5. Motion Rules
|
||||
|
||||
| Scenario | Allowed behavior |
|
||||
|---|---|
|
||||
| Page transition | Minimal fade or shared-axis style transition |
|
||||
| Speaking indicator | Subtle pulse, disabled or simplified under reduced motion |
|
||||
| Reconnect banner | Clear state transition without disruptive animation |
|
||||
| Layout change | Resize/reflow smoothly where possible |
|
||||
| Error state | Immediate, clear, non-color-only feedback |
|
||||
|
||||
## 6. Accessibility Rules
|
||||
|
||||
| Rule | Baseline |
|
||||
|---|---|
|
||||
| Minimum target | Critical controls should meet a 48dp target where practical. |
|
||||
| Semantics | Icon-only controls require labels. |
|
||||
| Focus | Desktop and tablet keyboard use require visible focus. |
|
||||
| State expression | Critical states require more than color. |
|
||||
| Text scale | Critical controls remain reachable under increased text size. |
|
||||
| Reduced motion | Non-essential animation is reduced or disabled. |
|
||||
|
||||
## 7. Internationalization UX
|
||||
|
||||
Product strings are localized. Server-provided server names, channel names, nicknames, and messages are not translated. Mixed-language and bidirectional text must be rendered as text content and preserved through diagnostics unless redacted.
|
||||
|
||||
## 8. Change History
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.1.0 | 2026-05-14 | Initial UI/UX guideline for Material 3, adaptive layout, accessibility, platform behavior, and i18n. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.1 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.1 | 2026-05-14 | Updated baseline after product decision closure: Apple App Store SDK gate uses Xcode 26+ and iOS 26 / iPadOS 26 SDK+ since 2026-04-28, platform baselines and decision traceability propagated across the document set. |
|
||||
|
||||
|
||||
## Baseline Candidate 0.9.2 Update
|
||||
|
||||
| Version | Date | Description |
|
||||
|---|---|---|
|
||||
| 0.9.2 | 2026-05-14 | Corrected Apple App Store Connect upload gate to 2026-04-28 and checked full-package naming, references, and coverage. |
|
||||
Reference in New Issue
Block a user