Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .agent/playbooks/compose-theming.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ triggers: Any UI component change, new screen, token update in DESIGN.md or Colo

# Skill: Compose Theming & 4-State UI Matrix

> Extracted from `Theme.kt`, `Color.kt`, `Type.kt`, `design-system.md` (Material 3 token table), and project `SecondBrainTheme` / `SereneCustomColors` implementations.
> Extracted from `Theme.kt`, `Color.kt`, `Type.kt`, `design-system.md` (Material 3 token table), and project `AgenticAndroidStarterTheme` / `SereneCustomColors` implementations.

---

## 1. Theme Entry Point

```kotlin
// Always wrap the root content in SecondBrainTheme (never AppTheme in new code)
SecondBrainTheme(
// Always wrap the root content in AgenticAndroidStarterTheme (never AppTheme in new code)
AgenticAndroidStarterTheme(
darkTheme = isSystemInDarkTheme(),
dynamicColor = false // DISABLED project-wide β€” Serene palette is locked
) {
Expand Down
4 changes: 2 additions & 2 deletions .agent/playbooks/roborazzi-export.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class YourScreenSnapshotTest {
@Test
fun snapshot_YourScreen_Default_Light() {
composeTestRule.setContent {
SecondBrainTheme(darkTheme = false) {
AgenticAndroidStarterTheme(darkTheme = false) {
YourScreen(uiState = YourUiState.Content(items = fakeItems))
}
}
Expand All @@ -54,7 +54,7 @@ class YourScreenSnapshotTest {
@Test
fun snapshot_YourScreen_Loading_Dark() {
composeTestRule.setContent {
SecondBrainTheme(darkTheme = true) {
AgenticAndroidStarterTheme(darkTheme = true) {
YourScreen(uiState = YourUiState.Loading)
}
}
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/crashlytics_triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ body:
placeholder: |
Exception: java.lang.IllegalStateException: ...
Thread: main
at com.secondbrain.app...
at com.example.kernel.starter...
validations:
required: true
- type: textarea
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<a href="https://github.com/nicolasvd/agentic-android-delivery-kernel/actions/workflows/delivery-pipeline.yml"><img src="https://img.shields.io/badge/Quality_Airbag-100%25_Passing-success?style=for-the-badge&logo=githubactions&logoColor=white" alt="Quality Airbag Status"></a>
<a href="https://developer.android.com/jetpack/compose"><img src="https://img.shields.io/badge/Jetpack_Compose-Material_3-4285F4?style=for-the-badge&logo=jetpackcompose&logoColor=white" alt="Jetpack Compose"></a>
<a href="https://github.com/takahirom/roborazzi"><img src="https://img.shields.io/badge/Visual_Regression-Roborazzi-purple?style=for-the-badge" alt="Roborazzi Visual Regression"></a>
<a href="https://github.com/users/nicolasvd/projects/2"><img src="https://img.shields.io/badge/Live_Board-Projects_v2-7C3AED?style=for-the-badge&logo=github&logoColor=white" alt="Live Kanban Board"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache_2.0-blue?style=for-the-badge" alt="License"></a>
<a href="kernel.config.json"><img src="https://img.shields.io/badge/Architecture-Micro--Kernel_(%3C10KB)-emerald?style=for-the-badge" alt="Micro-Kernel Architecture"></a>
</p>
Expand Down Expand Up @@ -270,6 +271,17 @@ When initiating a feature or bug fix:
4. **Delivery & Testing**: Persona 5 implements code on `<type>/issue-<id>-<slug>` and verifies tests green.
5. **Gate 3.5 Release**: Persona 6 opens the PR and awaits your explicit command (*"Tu peux merger"*).

### πŸ“‹ Live Kanban Delivery Board (GitHub Projects v2)

Explore the live delivery board in action:
πŸ‘‰ **[Live Delivery Board #2](https://github.com/users/nicolasvd/projects/2)** (`Agentic Delivery Board`)

The board is updated automatically in real-time by the kernel automation:
* **`Ready`**: Set at **Gate 1.4** upon JIT sealing via `./scripts/seal-issue.sh` with computed `Priority`, `Size`, and `Estimate`.
* **`In Progress`**: Synchronized automatically when Persona 5 checks out the dedicated branch.
* **`In Review`**: Set when Persona 6 opens the PR at Gate 3.5.
* **`Done`**: Updated atomically upon human-authorized merge and dual-sync.

---

## πŸ“š Technical Playbooks & Governance Registry
Expand Down
4 changes: 2 additions & 2 deletions design-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ graph LR
| **Tap "Share in Duo" (`AddMentalLoad` / `EditSheet`)** | Opens `AuthRequiredDialog` (soft-gating prompt). | Opens `PartnerLinkDialog` (invitation code input). | Toggles sharing directly into couple energy balance. |
| **Profile Screen (`ProfileScreen`)** | Displays Guest Mode banner with Google Sign-In CTA. | Displays Google email, Solo status, and Partner Link button. | Displays both partners (Alex & Sam), focus streak, and sanctuary code. |
| **Trends & Analytics (`TrendsScreen`)** | Displays Zen empty state encouraging Duo mode. | Displays personal cognitive statistics and velocity. | Displays full weekly distribution and couple energy ledger. |
| **TopBar (`SecondBrainTopBar`)** | Displays Guest avatar. Spinner only during local refresh. | Displays Google profile photo. Spinner during cloud sync. | Displays avatar and real-time duo sync status. |
| **TopBar (`KernelTopBar`)** | Displays Guest avatar. Spinner only during local refresh. | Displays Google profile photo. Spinner during cloud sync. | Displays avatar and real-time duo sync status. |

---

Expand Down Expand Up @@ -248,7 +248,7 @@ graph LR

| ID | Source Component | Trigger | Visual Effect | Timing & Easing | Target State |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **ANIM-01** | `SecondBrainApp`<br>`AnimatedContent` | Screen navigation change (`currentScreen`) | **Cross-fade** (`fadeIn` + `fadeOut`) | `tween` (~220ms, `FastOutSlowInEasing`) | Target screen (`HOME`, `DAILY_VOTE`, `ADD_MENTAL_LOAD`, `TRENDS`, `SETTINGS`, `PROFILE`) |
| **ANIM-01** | `KernelApp`<br>`AnimatedContent` | Screen navigation change (`currentScreen`) | **Cross-fade** (`fadeIn` + `fadeOut`) | `tween` (~220ms, `FastOutSlowInEasing`) | Target screen (`HOME`, `DAILY_VOTE`, `ADD_MENTAL_LOAD`, `TRENDS`, `SETTINGS`, `PROFILE`) |
| **ANIM-02** | `HomeScreen`<br>`AnimatedStatNumber` | Numeric counter change | **Directional slide + Fade** (Up on increment, down on decrement) | `slideInVertically` + `slideOutVertically` + `fadeIn`/`fadeOut` (~300ms) | New count display with smooth transition |
| **ANIM-03** | `DailyVoteScreen`<br>`DailyVoteItemCard` | Tap vote button (`vote_button_{id}`) | **Color transition + Bounce scale** | Spring `DampingRatioMediumBouncy` & `StiffnessMediumLow` | Task added/removed from Top 3, counter updated |
| **ANIM-04** | `TrendsScreen`<br>`TrendsPriorityCard` | Screen load or distribution update | **Horizontal width expansion** of progress bar | `tween(800ms, FastOutSlowInEasing)` | Bar matches area percentage |
Expand Down
2 changes: 1 addition & 1 deletion scripts/upload-screenshots.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ def main():

if not screenshots_path.exists():
print(f"❌ Error: Directory '{screenshots_path}' does not exist.")
print("πŸ’‘ Run './gradlew testDebugUnitTest --tests com.secondbrain.app.screenshots.StitchScreenshotCaptureTest -Proborazzi.record=true' first.")
print("πŸ’‘ Run './gradlew testDebugUnitTest --tests com.example.kernel.starter.GreetingPreviewScreenshotTest -Proborazzi.record=true' first.")
sys.exit(1)

# 1. Directory Hygiene & Regex Check
Expand Down
Binary file added social-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading