Skip to content

Commit 447d940

Browse files
Adopt Traverse platform demos and starter kit (#151) (#156)
Move android-demo, browser-consumer, macos-demo, react-demo, and youaskm3-starter-kit into reference-apps with offline smoke gates, shared expedition fixture, and docs that point at public Traverse surfaces only. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 5c54581 commit 447d940

41 files changed

Lines changed: 35566 additions & 1 deletion

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ gh project item-list 2 --owner traverse-framework --format json --limit 300 \
1313

1414
- **Phase 3 embedded runtime** ([#114](https://github.com/traverse-framework/reference-apps/issues/114)[#116](https://github.com/traverse-framework/reference-apps/issues/116)) — blocked on remaining consumable embedder SDKs: Traverse [#647](https://github.com/traverse-framework/Traverse/issues/647) (Swift), [#648](https://github.com/traverse-framework/Traverse/issues/648) (Kotlin), [#649](https://github.com/traverse-framework/Traverse/issues/649) (.NET). Rust (#650) and Web/TS (#646) embedder SDKs shipped; App-Refs [#117](https://github.com/traverse-framework/reference-apps/issues/117) Linux/CLI and [#113](https://github.com/traverse-framework/reference-apps/issues/113) web-react embed shipped.
1515

16-
Ready: (none — claim from Project 2 when new Ready items appear).
16+
Ready: (none after #151 — claim from Project 2 when new Ready items appear).
1717

1818
Update this section when a PR changes platform status (see PR template checklist).
1919

CLAUDE.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,16 @@ apps/
1818
windows-winui/ # WinUI 3 Windows client
1919
linux-gtk/ # GTK4 + Rust Linux client
2020
cli-rust/ # Rust CLI client
21+
doc-approval/ # doc-approval clients (all platforms)
22+
meeting-notes/ # meeting-notes clients
2123
trace-explorer/
2224
web-react/ # Trace Explorer — execution timeline debugger
25+
react-demo/ # Expedition React browser demo (adopted from Traverse)
26+
browser-consumer/ # Browser consumer façade
27+
android-demo/ # Expedition Android demo
28+
macos-demo/ # Expedition macOS demo
29+
youaskm3-starter-kit/ # Downstream browser starter kit
30+
fixtures/ # Shared UI demo fixtures
2331
.agents/skills/
2432
app-refs-ops/ # Ops skill for executing Project 2 tickets
2533
.specify/memory/ # Constitution and governing principles

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,16 @@ Each app also ships native clients (iOS, macOS, Android, Windows, Linux, CLI) wh
9090
| [`apps/doc-approval/`](apps/doc-approval/) | doc-approval clients (all platforms) |
9191
| [`apps/meeting-notes/`](apps/meeting-notes/) | meeting-notes clients (web-react shipped) |
9292
| [`apps/trace-explorer/web-react/`](apps/trace-explorer/web-react/) | Trace Explorer — execution timeline debugger |
93+
| [`apps/react-demo/`](apps/react-demo/) | Expedition React browser demo (adopted from Traverse) |
94+
| [`apps/browser-consumer/`](apps/browser-consumer/) | Browser consumer façade for downstream apps |
95+
| [`apps/android-demo/`](apps/android-demo/) | Expedition Android demo |
96+
| [`apps/macos-demo/`](apps/macos-demo/) | Expedition macOS demo |
97+
| [`apps/youaskm3-starter-kit/`](apps/youaskm3-starter-kit/) | youaskm3 browser starter kit |
98+
| [`docs/adopted-platform-clients.md`](docs/adopted-platform-clients.md) | Canonical homes for adopted Traverse demos |
9399
| [`docs/embedded-runtime-plan.md`](docs/embedded-runtime-plan.md) | Phase 3 target — embedded runtime + multi-capability workflows |
94100
| [`docs/traverse-runtime.md`](docs/traverse-runtime.md) | Dev sidecar setup (Phase 1/2) |
95101
| [`manifests/traverse-starter/`](manifests/traverse-starter/) | App manifest + component manifests (Phase 2) |
102+
| [`fixtures/`](fixtures/) | Shared UI demo fixtures (e.g. expedition session) |
96103
| [`scripts/ci/`](scripts/ci/) | Repository checks, smoke tests, coverage gate |
97104

98105
## Platform clients

apps/android-demo/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Traverse Android Demo
2+
3+
Checked-in Android (Compose) demo for Traverse expedition planning.
4+
5+
Canonical home: **`traverse-framework/reference-apps`** (`apps/android-demo/`).
6+
7+
What it does:
8+
9+
- renders one approved expedition flow
10+
- shows ordered runtime state updates
11+
- shows the final trace summary and output panel
12+
- assumes the runtime exists outside the app process
13+
14+
Fixture-driven rendering uses `app/src/main/assets/expedition-runtime-session.json`.
15+
16+
## Build (machine with Android SDK)
17+
18+
```bash
19+
cd apps/android-demo
20+
./gradlew :app:assembleDebug
21+
```
22+
23+
## Validation
24+
25+
```bash
26+
bash scripts/ci/android_demo_smoke.sh
27+
```
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
plugins {
2+
id("com.android.application")
3+
id("org.jetbrains.kotlin.android")
4+
}
5+
6+
android {
7+
namespace = "com.traverse.demo.android"
8+
compileSdk = 35
9+
10+
defaultConfig {
11+
applicationId = "com.traverse.demo.android"
12+
minSdk = 28
13+
targetSdk = 35
14+
versionCode = 1
15+
versionName = "0.1.0"
16+
}
17+
18+
buildFeatures {
19+
compose = true
20+
}
21+
22+
composeOptions {
23+
kotlinCompilerExtensionVersion = "1.5.14"
24+
}
25+
26+
compileOptions {
27+
sourceCompatibility = JavaVersion.VERSION_17
28+
targetCompatibility = JavaVersion.VERSION_17
29+
}
30+
31+
kotlinOptions {
32+
jvmTarget = "17"
33+
}
34+
}
35+
36+
dependencies {
37+
implementation(platform("androidx.compose:compose-bom:2024.09.02"))
38+
implementation("androidx.activity:activity-compose:1.9.2")
39+
implementation("androidx.compose.material3:material3")
40+
implementation("androidx.compose.ui:ui")
41+
implementation("androidx.compose.ui:ui-tooling-preview")
42+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
2+
<application
3+
android:allowBackup="true"
4+
android:label="@string/app_name"
5+
android:supportsRtl="true"
6+
android:theme="@style/Theme.Material3.DayNight.NoActionBar">
7+
<activity
8+
android:name=".MainActivity"
9+
android:exported="true">
10+
<intent-filter>
11+
<action android:name="android.intent.action.MAIN" />
12+
<category android:name="android.intent.category.LAUNCHER" />
13+
</intent-filter>
14+
</activity>
15+
</application>
16+
</manifest>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"demo_id": "expedition.plan.v1",
3+
"title": "Plan Expedition",
4+
"request_id": "req-expedition-001",
5+
"execution_id": "exec_req-expedition-001",
6+
"trace_id": "trace_exec_req-expedition-001",
7+
"status": "completed",
8+
"summary": "Traverse evaluates the governed expedition workflow and assembles a final expedition plan."
9+
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.traverse.demo.android
2+
3+
import android.os.Bundle
4+
import androidx.activity.ComponentActivity
5+
import androidx.activity.compose.setContent
6+
import androidx.compose.foundation.layout.Arrangement
7+
import androidx.compose.foundation.layout.Column
8+
import androidx.compose.foundation.layout.PaddingValues
9+
import androidx.compose.foundation.layout.fillMaxSize
10+
import androidx.compose.foundation.layout.fillMaxWidth
11+
import androidx.compose.foundation.layout.padding
12+
import androidx.compose.foundation.lazy.LazyColumn
13+
import androidx.compose.foundation.lazy.items
14+
import androidx.compose.material3.Card
15+
import androidx.compose.material3.MaterialTheme
16+
import androidx.compose.material3.Scaffold
17+
import androidx.compose.material3.Text
18+
import androidx.compose.runtime.Composable
19+
import androidx.compose.ui.Modifier
20+
import androidx.compose.ui.unit.dp
21+
22+
class MainActivity : ComponentActivity() {
23+
override fun onCreate(savedInstanceState: Bundle?) {
24+
super.onCreate(savedInstanceState)
25+
setContent {
26+
MaterialTheme {
27+
TraverseAndroidDemoScreen(sampleStateUpdates)
28+
}
29+
}
30+
}
31+
}
32+
33+
private val sampleStateUpdates = listOf(
34+
DemoStateUpdate(
35+
"Discovering capability",
36+
"Looking up expedition.planning.plan-expedition@1.0.0 in the registry."
37+
),
38+
DemoStateUpdate(
39+
"Evaluating constraints",
40+
"Confirming the approved expedition capability can run locally."
41+
),
42+
DemoStateUpdate(
43+
"Executing workflow",
44+
"Traversing the approved expedition planning workflow."
45+
),
46+
DemoStateUpdate(
47+
"Completed",
48+
"The expedition plan is ready for final review."
49+
)
50+
)
51+
52+
data class DemoStateUpdate(
53+
val title: String,
54+
val detail: String,
55+
)
56+
57+
@Composable
58+
private fun TraverseAndroidDemoScreen(stateUpdates: List<DemoStateUpdate>) {
59+
Scaffold { padding ->
60+
LazyColumn(
61+
modifier = Modifier
62+
.fillMaxSize()
63+
.padding(padding),
64+
contentPadding = PaddingValues(16.dp),
65+
verticalArrangement = Arrangement.spacedBy(12.dp),
66+
) {
67+
item {
68+
Card(modifier = Modifier.fillMaxWidth()) {
69+
Column(modifier = Modifier.padding(16.dp)) {
70+
Text("Traverse Android Demo", style = MaterialTheme.typography.headlineSmall)
71+
Text(
72+
"Plan Expedition",
73+
style = MaterialTheme.typography.titleMedium,
74+
modifier = Modifier.padding(top = 8.dp)
75+
)
76+
Text(
77+
"Runtime states and final trace summary render from the approved expedition demo fixture.",
78+
style = MaterialTheme.typography.bodyMedium,
79+
modifier = Modifier.padding(top = 8.dp)
80+
)
81+
}
82+
}
83+
}
84+
85+
items(stateUpdates) { update ->
86+
Card(modifier = Modifier.fillMaxWidth()) {
87+
Column(modifier = Modifier.padding(16.dp)) {
88+
Text(update.title, style = MaterialTheme.typography.titleMedium)
89+
Text(
90+
update.detail,
91+
style = MaterialTheme.typography.bodyMedium,
92+
modifier = Modifier.padding(top = 6.dp)
93+
)
94+
}
95+
}
96+
}
97+
}
98+
}
99+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<resources>
2+
<string name="app_name">Traverse Android Demo</string>
3+
</resources>

apps/android-demo/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
plugins {
2+
id("com.android.application") version "8.5.2" apply false
3+
id("org.jetbrains.kotlin.android") version "1.9.24" apply false
4+
}

0 commit comments

Comments
 (0)