chore(repo): initial baseline import (docs v0.9.2 + bootstrap)
Imports the v0.9.2 documentation baseline and the bootstrap files required by docs/governance/repository-bootstrap-plan.md v0.1.0 §3, minus the justfile (added in the next commit). This commit establishes the git history for the project. All previous work lived only as filesystem state with no version control.
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
|
||||
# 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. |
|
||||
@@ -0,0 +1,105 @@
|
||||
|
||||
# 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. |
|
||||
@@ -0,0 +1,120 @@
|
||||
|
||||
# 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. |
|
||||
@@ -0,0 +1,93 @@
|
||||
|
||||
# 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