rename 'docs' directory to 'doc'
This commit is contained in:
@@ -1215,7 +1215,7 @@ daily-notification-plugin/
|
|||||||
├── scripts/ # Build scripts and automation
|
├── scripts/ # Build scripts and automation
|
||||||
├── test-apps/ # Test applications
|
├── test-apps/ # Test applications
|
||||||
│ └── daily-notification-test/ # Vue 3 test app
|
│ └── daily-notification-test/ # Vue 3 test app
|
||||||
├── docs/ # Documentation
|
├── doc/ # Documentation
|
||||||
├── examples/ # Usage examples
|
├── examples/ # Usage examples
|
||||||
├── tests/ # Test files
|
├── tests/ # Test files
|
||||||
├── package.json # Node.js dependencies
|
├── package.json # Node.js dependencies
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- **Docs**: `docs/CONSUMING_APP_ANDROID_NOTES.md` — notes for consuming apps on debouncing double `scheduleDailyNotification` calls and debugging alarms that are scheduled but do not fire (logcat with `DailyNotificationReceiver`).
|
- **Docs**: `doc/platform/android/CONSUMING_APP_ANDROID_NOTES.md` — notes for consuming apps on debouncing double `scheduleDailyNotification` calls and debugging alarms that are scheduled but do not fire (logcat with `DailyNotificationReceiver`).
|
||||||
|
|
||||||
## [1.1.4] - 2026-02-16
|
## [1.1.4] - 2026-02-16
|
||||||
|
|
||||||
|
|||||||
50
README.md
50
README.md
@@ -13,12 +13,12 @@ The Daily Notification Plugin is a comprehensive Capacitor plugin that provides
|
|||||||
|
|
||||||
**New to the plugin?** Start here:
|
**New to the plugin?** Start here:
|
||||||
|
|
||||||
1. **[Installation & Setup](./docs/GETTING_STARTED.md)** — Installation, platform setup, and basic usage
|
1. **[Installation & Setup](./doc/GETTING_STARTED.md)** — Installation, platform setup, and basic usage
|
||||||
2. **[Quick Start Guide](./docs/examples/QUICK_START.md)** — Minimal working example
|
2. **[Quick Start Guide](./doc/examples/QUICK_START.md)** — Minimal working example
|
||||||
3. **[Common Patterns](./docs/examples/COMMON_PATTERNS.md)** — Common integration patterns
|
3. **[Common Patterns](./doc/examples/COMMON_PATTERNS.md)** — Common integration patterns
|
||||||
4. **[Troubleshooting](./docs/TROUBLESHOOTING.md)** — Common issues and solutions
|
4. **[Troubleshooting](./doc/TROUBLESHOOTING.md)** — Common issues and solutions
|
||||||
|
|
||||||
For complete documentation, see the [Documentation Index](./docs/00-INDEX.md).
|
For complete documentation, see the [Documentation Index](./doc/00-INDEX.md).
|
||||||
|
|
||||||
### 🎯 **Native-First Architecture**
|
### 🎯 **Native-First Architecture**
|
||||||
|
|
||||||
@@ -111,8 +111,8 @@ The following behaviors are best-effort and may vary by platform:
|
|||||||
- **Error Handling**: Exponential backoff and retry logic
|
- **Error Handling**: Exponential backoff and retry logic
|
||||||
- **Security**: Encrypted storage and secure callback handling
|
- **Security**: Encrypted storage and secure callback handling
|
||||||
- **Database Access**: Full TypeScript interfaces for plugin database access
|
- **Database Access**: Full TypeScript interfaces for plugin database access
|
||||||
- See [`docs/architecture/DATABASE_INTERFACES.md`](docs/architecture/DATABASE_INTERFACES.md) for complete API reference
|
- See [`doc/architecture/DATABASE_INTERFACES.md`](doc/architecture/DATABASE_INTERFACES.md) for complete API reference
|
||||||
- See [docs/00-INDEX.md](docs/00-INDEX.md) for complete documentation index
|
- See [doc/00-INDEX.md](doc/00-INDEX.md) for complete documentation index
|
||||||
- Plugin owns its SQLite database - access via Capacitor interfaces
|
- Plugin owns its SQLite database - access via Capacitor interfaces
|
||||||
- Supports schedules, content cache, callbacks, history, and configuration
|
- Supports schedules, content cache, callbacks, history, and configuration
|
||||||
|
|
||||||
@@ -141,11 +141,11 @@ The plugin follows the standard Capacitor Android structure - no additional path
|
|||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
**📚 Complete Documentation Index**: See [docs/00-INDEX.md](./docs/00-INDEX.md) for organized access to all documentation.
|
**📚 Complete Documentation Index**: See [doc/00-INDEX.md](./doc/00-INDEX.md) for organized access to all documentation.
|
||||||
|
|
||||||
## Quick Integration
|
## Quick Integration
|
||||||
|
|
||||||
**New to the plugin?** Start with the [Quick Integration Guide](./docs/integration/QUICK_START.md) for step-by-step setup instructions.
|
**New to the plugin?** Start with the [Quick Integration Guide](./doc/integration/QUICK_START.md) for step-by-step setup instructions.
|
||||||
|
|
||||||
The quick guide covers:
|
The quick guide covers:
|
||||||
- Installation and setup
|
- Installation and setup
|
||||||
@@ -154,7 +154,7 @@ The quick guide covers:
|
|||||||
- Basic usage examples
|
- Basic usage examples
|
||||||
- Troubleshooting common issues
|
- Troubleshooting common issues
|
||||||
|
|
||||||
**For AI Agents**: See [AI Integration Guide](./docs/ai/AI_INTEGRATION_GUIDE.md) for explicit, machine-readable instructions with verification steps, error handling, and decision trees.
|
**For AI Agents**: See [AI Integration Guide](./doc/ai/AI_INTEGRATION_GUIDE.md) for explicit, machine-readable instructions with verification steps, error handling, and decision trees.
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
@@ -410,13 +410,13 @@ console.log(`Will fire at: ${new Date(result.triggerAtMillis).toLocaleString()}`
|
|||||||
|
|
||||||
For immediate validation of plugin functionality:
|
For immediate validation of plugin functionality:
|
||||||
|
|
||||||
- **Android**: [Manual Smoke Test - Android](./docs/testing/MANUAL_SMOKE_TEST.md#android-platform-testing)
|
- **Android**: [Manual Smoke Test - Android](./doc/testing/MANUAL_SMOKE_TEST.md#android-platform-testing)
|
||||||
- **iOS**: [Manual Smoke Test - iOS](./docs/testing/MANUAL_SMOKE_TEST.md#ios-platform-testing)
|
- **iOS**: [Manual Smoke Test - iOS](./doc/testing/MANUAL_SMOKE_TEST.md#ios-platform-testing)
|
||||||
- **Electron**: [Manual Smoke Test - Electron](./docs/testing/MANUAL_SMOKE_TEST.md#electron-platform-testing)
|
- **Electron**: [Manual Smoke Test - Electron](./doc/testing/MANUAL_SMOKE_TEST.md#electron-platform-testing)
|
||||||
|
|
||||||
### Manual Smoke Test Documentation
|
### Manual Smoke Test Documentation
|
||||||
|
|
||||||
Complete testing procedures: [docs/testing/MANUAL_SMOKE_TEST.md](./docs/testing/MANUAL_SMOKE_TEST.md)
|
Complete testing procedures: [doc/testing/MANUAL_SMOKE_TEST.md](./doc/testing/MANUAL_SMOKE_TEST.md)
|
||||||
|
|
||||||
## Compatibility Matrix
|
## Compatibility Matrix
|
||||||
|
|
||||||
@@ -825,21 +825,21 @@ MIT License - see [LICENSE](LICENSE) file for details.
|
|||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
|
|
||||||
**📚 [Complete Documentation Index](./docs/00-INDEX.md)** - Central hub for all project documentation
|
**📚 [Complete Documentation Index](./doc/00-INDEX.md)** - Central hub for all project documentation
|
||||||
|
|
||||||
**Key Documentation:**
|
**Key Documentation:**
|
||||||
- **Integration**: [Integration Guide](./docs/integration/INTEGRATION_GUIDE.md) - Complete integration instructions
|
- **Integration**: [Integration Guide](./doc/integration/INTEGRATION_GUIDE.md) - Complete integration instructions
|
||||||
- **Platform Guides**:
|
- **Platform Guides**:
|
||||||
- [iOS Platform Docs](./docs/platform/ios/) - iOS implementation, migration, and troubleshooting
|
- [iOS Platform Docs](./doc/platform/ios/) - iOS implementation, migration, and troubleshooting
|
||||||
- [Android Platform Docs](./docs/platform/android/) - Android implementation and directives
|
- [Android Platform Docs](./doc/platform/android/) - Android implementation and directives
|
||||||
- **Testing**: [Testing Documentation](./docs/testing/) - Comprehensive testing guides and procedures
|
- **Testing**: [Testing Documentation](./doc/testing/) - Comprehensive testing guides and procedures
|
||||||
- **Alarms**: [Alarm System Docs](./docs/alarms/) - Alarm system documentation
|
- **Alarms**: [Alarm System Docs](./doc/alarms/) - Alarm system documentation
|
||||||
- **Database Interfaces**: [`docs/architecture/DATABASE_INTERFACES.md`](docs/architecture/DATABASE_INTERFACES.md) - Complete guide to accessing plugin database from TypeScript/webview
|
- **Database Interfaces**: [`doc/architecture/DATABASE_INTERFACES.md`](doc/architecture/DATABASE_INTERFACES.md) - Complete guide to accessing plugin database from TypeScript/webview
|
||||||
- **Database Implementation**: [`docs/DATABASE_INTERFACES_IMPLEMENTATION.md`](docs/DATABASE_INTERFACES_IMPLEMENTATION.md) - Implementation summary and status
|
- **Database Implementation**: [`doc/DATABASE_INTERFACES_IMPLEMENTATION.md`](doc/DATABASE_INTERFACES_IMPLEMENTATION.md) - Implementation summary and status
|
||||||
- **Database Consolidation Plan**: [`docs/platform/android/DATABASE_CONSOLIDATION_PLAN.md`](docs/platform/android/DATABASE_CONSOLIDATION_PLAN.md) - Database schema consolidation roadmap
|
- **Database Consolidation Plan**: [`doc/platform/android/DATABASE_CONSOLIDATION_PLAN.md`](doc/platform/android/DATABASE_CONSOLIDATION_PLAN.md) - Database schema consolidation roadmap
|
||||||
- **Building Guide**: [BUILDING.md](BUILDING.md) - Comprehensive build instructions and troubleshooting
|
- **Building Guide**: [BUILDING.md](BUILDING.md) - Comprehensive build instructions and troubleshooting
|
||||||
- **Design & Research**: [Design Documentation](./docs/design/) - Design research and implementation guides
|
- **Design & Research**: [Design Documentation](./doc/design/) - Design research and implementation guides
|
||||||
- **Archive**: [Legacy Documentation](./docs/archive/2025-legacy-doc/) - Historical documentation preserved for reference
|
- **Archive**: [Legacy Documentation](./doc/archive/2025-legacy-doc/) - Historical documentation preserved for reference
|
||||||
|
|
||||||
### Community
|
### Community
|
||||||
|
|
||||||
|
|||||||
19
android/app/capacitor.build.gradle
Normal file
19
android/app/capacitor.build.gradle
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
|
||||||
|
|
||||||
|
android {
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
|
targetCompatibility JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
|
||||||
|
dependencies {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (hasProperty('postBuildExtras')) {
|
||||||
|
postBuildExtras()
|
||||||
|
}
|
||||||
16
android/app/src/main/assets/capacitor.config.json
Normal file
16
android/app/src/main/assets/capacitor.config.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"appId": "org.timesafari.dailynotification",
|
||||||
|
"appName": "DailyNotification Test App",
|
||||||
|
"webDir": "www",
|
||||||
|
"server": {
|
||||||
|
"androidScheme": "https"
|
||||||
|
},
|
||||||
|
"plugins": {
|
||||||
|
"DailyNotification": {
|
||||||
|
"fetchUrl": "https://api.example.com/daily-content",
|
||||||
|
"scheduleTime": "09:00",
|
||||||
|
"enableNotifications": true,
|
||||||
|
"debugMode": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
android/app/src/main/assets/capacitor.plugins.json
Normal file
1
android/app/src/main/assets/capacitor.plugins.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
0
android/app/src/main/assets/public/cordova.js
vendored
Normal file
0
android/app/src/main/assets/public/cordova.js
vendored
Normal file
0
android/app/src/main/assets/public/cordova_plugins.js
vendored
Normal file
0
android/app/src/main/assets/public/cordova_plugins.js
vendored
Normal file
475
android/app/src/main/assets/public/index.html
Normal file
475
android/app/src/main/assets/public/index.html
Normal file
@@ -0,0 +1,475 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
||||||
|
<meta http-equiv="Pragma" content="no-cache">
|
||||||
|
<meta http-equiv="Expires" content="0">
|
||||||
|
<title>DailyNotification Plugin Test</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||||
|
margin: 0;
|
||||||
|
padding: 20px;
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
min-height: 100vh;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
font-size: 2.5em;
|
||||||
|
}
|
||||||
|
.button {
|
||||||
|
background: rgba(255, 255, 255, 0.2);
|
||||||
|
border: 2px solid rgba(255, 255, 255, 0.3);
|
||||||
|
color: white;
|
||||||
|
padding: 15px 30px;
|
||||||
|
margin: 10px;
|
||||||
|
border-radius: 25px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 16px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
.button:hover {
|
||||||
|
background: rgba(255, 255, 255, 0.3);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
.status {
|
||||||
|
margin-top: 30px;
|
||||||
|
padding: 20px;
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
border-radius: 10px;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div id="statusCard" class="status" style="margin-bottom: 20px; font-size: 14px;">
|
||||||
|
<strong>Plugin Status</strong><br>
|
||||||
|
<div style="margin-top: 10px;">
|
||||||
|
⚙️ Plugin Settings: <span id="configStatus">Not configured</span><br>
|
||||||
|
🔌 Native Fetcher: <span id="fetcherStatus">Not configured</span><br>
|
||||||
|
🔔 Notifications: <span id="notificationPermStatus">Checking...</span><br>
|
||||||
|
⏰ Exact Alarms: <span id="exactAlarmPermStatus">Checking...</span><br>
|
||||||
|
📢 Channel: <span id="channelStatus">Checking...</span><br>
|
||||||
|
<div id="pluginStatusContent" style="margin-top: 8px;">
|
||||||
|
Loading plugin status...
|
||||||
|
</div>
|
||||||
|
<div id="notificationReceivedIndicator" style="margin-top: 8px; padding: 8px; background: rgba(0, 255, 0, 0.2); border-radius: 5px; display: none;">
|
||||||
|
<strong>🔔 Notification Received!</strong><br>
|
||||||
|
<span id="notificationReceivedTime"></span><br>
|
||||||
|
<small>Check the top of your screen for the notification banner</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button class="button" onclick="configurePlugin()">Configure Plugin</button>
|
||||||
|
<button class="button" onclick="requestPermissions()">Request Permissions</button>
|
||||||
|
<button class="button" onclick="testNotification()">Test Notification</button>
|
||||||
|
<button class="button" onclick="checkComprehensiveStatus()">Full System Status</button>
|
||||||
|
|
||||||
|
<div id="status" class="status">
|
||||||
|
Ready to test...
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
console.log('Script loading...');
|
||||||
|
console.log('JavaScript is working!');
|
||||||
|
|
||||||
|
// Use real DailyNotification plugin
|
||||||
|
console.log('Using real DailyNotification plugin...');
|
||||||
|
window.DailyNotification = window.Capacitor.Plugins.DailyNotification;
|
||||||
|
|
||||||
|
// Define functions immediately and attach to window
|
||||||
|
|
||||||
|
function configurePlugin() {
|
||||||
|
console.log('configurePlugin called');
|
||||||
|
const status = document.getElementById('status');
|
||||||
|
const configStatus = document.getElementById('configStatus');
|
||||||
|
const fetcherStatus = document.getElementById('fetcherStatus');
|
||||||
|
|
||||||
|
status.innerHTML = 'Configuring plugin...';
|
||||||
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
||||||
|
|
||||||
|
// Update top status to show configuring
|
||||||
|
configStatus.innerHTML = '⏳ Configuring...';
|
||||||
|
fetcherStatus.innerHTML = '⏳ Waiting...';
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!window.DailyNotification) {
|
||||||
|
status.innerHTML = 'DailyNotification plugin not available';
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
configStatus.innerHTML = '❌ Plugin unavailable';
|
||||||
|
fetcherStatus.innerHTML = '❌ Plugin unavailable';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure plugin settings
|
||||||
|
window.DailyNotification.configure({
|
||||||
|
storage: 'tiered',
|
||||||
|
ttlSeconds: 86400,
|
||||||
|
prefetchLeadMinutes: 60,
|
||||||
|
maxNotificationsPerDay: 3,
|
||||||
|
retentionDays: 7
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
console.log('Plugin settings configured, now configuring native fetcher...');
|
||||||
|
// Update top status
|
||||||
|
configStatus.innerHTML = '✅ Configured';
|
||||||
|
|
||||||
|
// Configure native fetcher with demo credentials
|
||||||
|
// Note: DemoNativeFetcher uses hardcoded mock data, so this is optional
|
||||||
|
// but demonstrates the API. In production, this would be real credentials.
|
||||||
|
return window.DailyNotification.configureNativeFetcher({
|
||||||
|
apiBaseUrl: 'http://10.0.2.2:3000', // Android emulator → host localhost
|
||||||
|
activeDid: 'did:ethr:0xDEMO1234567890', // Demo DID
|
||||||
|
jwtSecret: 'demo-jwt-secret-for-development-testing'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
// Update top status
|
||||||
|
fetcherStatus.innerHTML = '✅ Configured';
|
||||||
|
|
||||||
|
// Update bottom status for user feedback
|
||||||
|
status.innerHTML = 'Plugin configured successfully!';
|
||||||
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
// Update top status with error
|
||||||
|
if (configStatus.innerHTML.includes('Configuring')) {
|
||||||
|
configStatus.innerHTML = '❌ Failed';
|
||||||
|
}
|
||||||
|
if (fetcherStatus.innerHTML.includes('Waiting') || fetcherStatus.innerHTML.includes('Configuring')) {
|
||||||
|
fetcherStatus.innerHTML = '❌ Failed';
|
||||||
|
}
|
||||||
|
|
||||||
|
status.innerHTML = `Configuration failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
configStatus.innerHTML = '❌ Error';
|
||||||
|
fetcherStatus.innerHTML = '❌ Error';
|
||||||
|
status.innerHTML = `Configuration failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadPluginStatus() {
|
||||||
|
console.log('loadPluginStatus called');
|
||||||
|
const pluginStatusContent = document.getElementById('pluginStatusContent');
|
||||||
|
const statusCard = document.getElementById('statusCard');
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!window.DailyNotification) {
|
||||||
|
pluginStatusContent.innerHTML = '❌ DailyNotification plugin not available';
|
||||||
|
statusCard.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.DailyNotification.getNotificationStatus()
|
||||||
|
.then(result => {
|
||||||
|
const nextTime = result.nextNotificationTime ? new Date(result.nextNotificationTime).toLocaleString() : 'None scheduled';
|
||||||
|
const hasSchedules = result.isEnabled || (result.pending && result.pending > 0);
|
||||||
|
const statusIcon = hasSchedules ? '✅' : '⏸️';
|
||||||
|
pluginStatusContent.innerHTML = `${statusIcon} Active Schedules: ${hasSchedules ? 'Yes' : 'No'}<br>
|
||||||
|
📅 Next Notification: ${nextTime}<br>
|
||||||
|
⏳ Pending: ${result.pending || 0}`;
|
||||||
|
statusCard.style.background = hasSchedules ?
|
||||||
|
'rgba(0, 255, 0, 0.15)' : 'rgba(255, 255, 255, 0.1)'; // Green if active, light gray if none
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
pluginStatusContent.innerHTML = `⚠️ Status check failed: ${error.message}`;
|
||||||
|
statusCard.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
pluginStatusContent.innerHTML = `⚠️ Status check failed: ${error.message}`;
|
||||||
|
statusCard.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Notification test functions
|
||||||
|
function testNotification() {
|
||||||
|
console.log('testNotification called');
|
||||||
|
|
||||||
|
// Quick sanity check - test plugin availability
|
||||||
|
if (window.Capacitor && window.Capacitor.isPluginAvailable) {
|
||||||
|
const isAvailable = window.Capacitor.isPluginAvailable('DailyNotification');
|
||||||
|
console.log('is plugin available?', isAvailable);
|
||||||
|
}
|
||||||
|
|
||||||
|
const status = document.getElementById('status');
|
||||||
|
status.innerHTML = 'Testing plugin connection...';
|
||||||
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!window.DailyNotification) {
|
||||||
|
status.innerHTML = 'DailyNotification plugin not available';
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test the notification method directly
|
||||||
|
console.log('Testing notification scheduling...');
|
||||||
|
const now = new Date();
|
||||||
|
const notificationTime = new Date(now.getTime() + 240000); // 4 minutes from now
|
||||||
|
const prefetchTime = new Date(now.getTime() + 120000); // 2 minutes from now (2 min before notification)
|
||||||
|
const notificationTimeString = notificationTime.getHours().toString().padStart(2, '0') + ':' +
|
||||||
|
notificationTime.getMinutes().toString().padStart(2, '0');
|
||||||
|
const prefetchTimeString = prefetchTime.getHours().toString().padStart(2, '0') + ':' +
|
||||||
|
prefetchTime.getMinutes().toString().padStart(2, '0');
|
||||||
|
|
||||||
|
window.DailyNotification.scheduleDailyNotification({
|
||||||
|
time: notificationTimeString,
|
||||||
|
title: 'Test Notification',
|
||||||
|
body: 'This is a test notification from the DailyNotification plugin!',
|
||||||
|
sound: true,
|
||||||
|
priority: 'high'
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
const prefetchTimeReadable = prefetchTime.toLocaleTimeString();
|
||||||
|
const notificationTimeReadable = notificationTime.toLocaleTimeString();
|
||||||
|
status.innerHTML = '✅ Notification scheduled!<br>' +
|
||||||
|
'📥 Prefetch: ' + prefetchTimeReadable + ' (' + prefetchTimeString + ')<br>' +
|
||||||
|
'🔔 Notification: ' + notificationTimeReadable + ' (' + notificationTimeString + ')<br><br>' +
|
||||||
|
'<small>💡 When the notification fires, look for a banner at the <strong>top of your screen</strong>.</small>';
|
||||||
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
||||||
|
// Refresh plugin status display
|
||||||
|
setTimeout(() => loadPluginStatus(), 500);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
// Check if this is an exact alarm permission error
|
||||||
|
if (error.code === 'EXACT_ALARM_PERMISSION_REQUIRED' ||
|
||||||
|
error.message.includes('Exact alarm permission') ||
|
||||||
|
error.message.includes('Alarms & reminders')) {
|
||||||
|
status.innerHTML = '⚠️ Exact Alarm Permission Required<br><br>' +
|
||||||
|
'Settings opened automatically.<br>' +
|
||||||
|
'Please enable "Allow exact alarms" and return to try again.';
|
||||||
|
status.style.background = 'rgba(255, 165, 0, 0.3)'; // Orange background
|
||||||
|
} else {
|
||||||
|
status.innerHTML = `❌ Notification failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
status.innerHTML = `Notification test failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Permission management functions
|
||||||
|
function requestPermissions() {
|
||||||
|
console.log('requestPermissions called');
|
||||||
|
const status = document.getElementById('status');
|
||||||
|
status.innerHTML = 'Requesting permissions...';
|
||||||
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!window.DailyNotification) {
|
||||||
|
status.innerHTML = 'DailyNotification plugin not available';
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.DailyNotification.requestNotificationPermissions()
|
||||||
|
.then(() => {
|
||||||
|
status.innerHTML = 'Permission request completed! Check your device settings if needed.';
|
||||||
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
||||||
|
|
||||||
|
// Refresh permission and channel status display after request
|
||||||
|
setTimeout(() => {
|
||||||
|
loadPermissionStatus();
|
||||||
|
loadChannelStatus();
|
||||||
|
}, 1000);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
status.innerHTML = `Permission request failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
status.innerHTML = `Permission request failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadChannelStatus() {
|
||||||
|
const channelStatus = document.getElementById('channelStatus');
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!window.DailyNotification) {
|
||||||
|
channelStatus.innerHTML = '❌ Plugin unavailable';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.DailyNotification.isChannelEnabled()
|
||||||
|
.then(result => {
|
||||||
|
const importanceText = getImportanceText(result.importance);
|
||||||
|
if (result.enabled) {
|
||||||
|
channelStatus.innerHTML = `✅ Enabled (${importanceText})`;
|
||||||
|
} else {
|
||||||
|
channelStatus.innerHTML = `❌ Disabled (${importanceText})`;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
channelStatus.innerHTML = '⚠️ Error';
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
channelStatus.innerHTML = '⚠️ Error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkComprehensiveStatus() {
|
||||||
|
const status = document.getElementById('status');
|
||||||
|
status.innerHTML = 'Checking comprehensive status...';
|
||||||
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!window.DailyNotification) {
|
||||||
|
status.innerHTML = 'DailyNotification plugin not available';
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.DailyNotification.checkStatus()
|
||||||
|
.then(result => {
|
||||||
|
const canSchedule = result.canScheduleNow;
|
||||||
|
const issues = [];
|
||||||
|
|
||||||
|
if (!result.postNotificationsGranted) {
|
||||||
|
issues.push('POST_NOTIFICATIONS permission');
|
||||||
|
}
|
||||||
|
if (!result.channelEnabled) {
|
||||||
|
issues.push('notification channel disabled');
|
||||||
|
}
|
||||||
|
if (!result.exactAlarmsGranted) {
|
||||||
|
issues.push('exact alarm permission');
|
||||||
|
}
|
||||||
|
|
||||||
|
let statusText = `Status: ${canSchedule ? 'Ready to schedule' : 'Issues found'}`;
|
||||||
|
if (issues.length > 0) {
|
||||||
|
statusText += `\nIssues: ${issues.join(', ')}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
statusText += `\nChannel: ${getImportanceText(result.channelImportance)}`;
|
||||||
|
statusText += `\nChannel ID: ${result.channelId}`;
|
||||||
|
|
||||||
|
status.innerHTML = statusText;
|
||||||
|
status.style.background = canSchedule ? 'rgba(0, 255, 0, 0.3)' : 'rgba(255, 0, 0, 0.3)';
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
status.innerHTML = `Status check failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
status.innerHTML = `Status check failed: ${error.message}`;
|
||||||
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getImportanceText(importance) {
|
||||||
|
switch (importance) {
|
||||||
|
case 0: return 'None (blocked)';
|
||||||
|
case 1: return 'Min';
|
||||||
|
case 2: return 'Low';
|
||||||
|
case 3: return 'Default';
|
||||||
|
case 4: return 'High';
|
||||||
|
case 5: return 'Max';
|
||||||
|
default: return `Unknown (${importance})`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attach to window object
|
||||||
|
window.configurePlugin = configurePlugin;
|
||||||
|
window.testNotification = testNotification;
|
||||||
|
window.requestPermissions = requestPermissions;
|
||||||
|
window.checkComprehensiveStatus = checkComprehensiveStatus;
|
||||||
|
|
||||||
|
function loadPermissionStatus() {
|
||||||
|
const notificationPermStatus = document.getElementById('notificationPermStatus');
|
||||||
|
const exactAlarmPermStatus = document.getElementById('exactAlarmPermStatus');
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!window.DailyNotification) {
|
||||||
|
notificationPermStatus.innerHTML = '❌ Plugin unavailable';
|
||||||
|
exactAlarmPermStatus.innerHTML = '❌ Plugin unavailable';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.DailyNotification.checkPermissionStatus()
|
||||||
|
.then(result => {
|
||||||
|
notificationPermStatus.innerHTML = result.notificationsEnabled ? '✅ Granted' : '❌ Not granted';
|
||||||
|
exactAlarmPermStatus.innerHTML = result.exactAlarmEnabled ? '✅ Granted' : '❌ Not granted';
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
notificationPermStatus.innerHTML = '⚠️ Error';
|
||||||
|
exactAlarmPermStatus.innerHTML = '⚠️ Error';
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
notificationPermStatus.innerHTML = '⚠️ Error';
|
||||||
|
exactAlarmPermStatus.innerHTML = '⚠️ Error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for notification delivery periodically
|
||||||
|
function checkNotificationDelivery() {
|
||||||
|
if (!window.DailyNotification) return;
|
||||||
|
|
||||||
|
window.DailyNotification.getNotificationStatus()
|
||||||
|
.then(result => {
|
||||||
|
if (result.lastNotificationTime) {
|
||||||
|
const lastTime = new Date(result.lastNotificationTime);
|
||||||
|
const now = new Date();
|
||||||
|
const timeDiff = now - lastTime;
|
||||||
|
|
||||||
|
// If notification was received in the last 2 minutes, show indicator
|
||||||
|
if (timeDiff > 0 && timeDiff < 120000) {
|
||||||
|
const indicator = document.getElementById('notificationReceivedIndicator');
|
||||||
|
const timeSpan = document.getElementById('notificationReceivedTime');
|
||||||
|
|
||||||
|
if (indicator && timeSpan) {
|
||||||
|
indicator.style.display = 'block';
|
||||||
|
timeSpan.textContent = `Received at ${lastTime.toLocaleTimeString()}`;
|
||||||
|
|
||||||
|
// Hide after 30 seconds
|
||||||
|
setTimeout(() => {
|
||||||
|
indicator.style.display = 'none';
|
||||||
|
}, 30000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
// Silently fail - this is just for visual feedback
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load plugin status automatically on page load
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
console.log('Page loaded, loading plugin status...');
|
||||||
|
// Small delay to ensure Capacitor is ready
|
||||||
|
setTimeout(() => {
|
||||||
|
loadPluginStatus();
|
||||||
|
loadPermissionStatus();
|
||||||
|
loadChannelStatus();
|
||||||
|
|
||||||
|
// Check for notification delivery every 5 seconds
|
||||||
|
setInterval(checkNotificationDelivery, 5000);
|
||||||
|
}, 500);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
console.log('Functions attached to window:', {
|
||||||
|
configurePlugin: typeof window.configurePlugin,
|
||||||
|
testNotification: typeof window.testNotification
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
6
android/app/src/main/res/xml/config.xml
Normal file
6
android/app/src/main/res/xml/config.xml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<widget version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||||
|
<access origin="*" />
|
||||||
|
|
||||||
|
|
||||||
|
</widget>
|
||||||
59
android/capacitor-cordova-android-plugins/build.gradle
Normal file
59
android/capacitor-cordova-android-plugins/build.gradle
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
ext {
|
||||||
|
androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.6.1'
|
||||||
|
cordovaAndroidVersion = project.hasProperty('cordovaAndroidVersion') ? rootProject.ext.cordovaAndroidVersion : '10.1.1'
|
||||||
|
}
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
classpath 'com.android.tools.build:gradle:8.2.1'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'com.android.library'
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace "capacitor.cordova.android.plugins"
|
||||||
|
compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34
|
||||||
|
defaultConfig {
|
||||||
|
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
|
||||||
|
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34
|
||||||
|
versionCode 1
|
||||||
|
versionName "1.0"
|
||||||
|
}
|
||||||
|
lintOptions {
|
||||||
|
abortOnError false
|
||||||
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
|
targetCompatibility JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
flatDir{
|
||||||
|
dirs 'src/main/libs', 'libs'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation fileTree(dir: 'src/main/libs', include: ['*.jar'])
|
||||||
|
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
|
||||||
|
implementation "org.apache.cordova:framework:$cordovaAndroidVersion"
|
||||||
|
// SUB-PROJECT DEPENDENCIES START
|
||||||
|
|
||||||
|
// SUB-PROJECT DEPENDENCIES END
|
||||||
|
}
|
||||||
|
|
||||||
|
// PLUGIN GRADLE EXTENSIONS START
|
||||||
|
apply from: "cordova.variables.gradle"
|
||||||
|
// PLUGIN GRADLE EXTENSIONS END
|
||||||
|
|
||||||
|
for (def func : cdvPluginPostBuildExtras) {
|
||||||
|
func()
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
|
||||||
|
ext {
|
||||||
|
cdvMinSdkVersion = project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
|
||||||
|
// Plugin gradle extensions can append to this to have code run at the end.
|
||||||
|
cdvPluginPostBuildExtras = []
|
||||||
|
cordovaConfig = [:]
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:amazon="http://schemas.amazon.com/apk/res/android">
|
||||||
|
<application >
|
||||||
|
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
3
android/capacitor.settings.gradle
Normal file
3
android/capacitor.settings.gradle
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
|
||||||
|
include ':capacitor-android'
|
||||||
|
project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor')
|
||||||
@@ -17,9 +17,9 @@ import java.util.concurrent.TimeUnit
|
|||||||
* Phase 2: Force stop detection and recovery
|
* Phase 2: Force stop detection and recovery
|
||||||
*
|
*
|
||||||
* Implements:
|
* Implements:
|
||||||
* - [Plugin Requirements §3.1.2 - App Cold Start](../docs/alarms/03-plugin-requirements.md#312-app-cold-start)
|
* - [Plugin Requirements §3.1.2 - App Cold Start](../../../../../../../doc/alarms/03-plugin-requirements.md#312-app-cold-start)
|
||||||
* - [Plugin Requirements §3.1.4 - Force Stop Recovery](../docs/alarms/03-plugin-requirements.md#314-force-stop-recovery-android-only)
|
* - [Plugin Requirements §3.1.4 - Force Stop Recovery](../../../../../../../doc/alarms/03-plugin-requirements.md#314-force-stop-recovery-android-only)
|
||||||
* Platform Reference: [Android §2.1.4](../docs/alarms/01-platform-capability-reference.md#214-alarms-can-be-restored-after-app-restart)
|
* Platform Reference: [Android §2.1.4](../../../../../../../doc/alarms/01-platform-capability-reference.md#214-alarms-can-be-restored-after-app-restart)
|
||||||
*
|
*
|
||||||
* @author Matthew Raymer
|
* @author Matthew Raymer
|
||||||
* @version 2.0.0 - Phase 2: Force stop detection
|
* @version 2.0.0 - Phase 2: Force stop detection
|
||||||
@@ -67,7 +67,7 @@ class ReactivationManager(private val context: Context) {
|
|||||||
*
|
*
|
||||||
* Phase 3: Boot recovery that restores alarms after device reboot
|
* Phase 3: Boot recovery that restores alarms after device reboot
|
||||||
*
|
*
|
||||||
* Implements: [Plugin Requirements §3.1.1 - Boot Event](../docs/alarms/03-plugin-requirements.md#311-boot-event-android-only)
|
* Implements: [Plugin Requirements §3.1.1 - Boot Event](../../../../../../../doc/alarms/03-plugin-requirements.md#311-boot-event-android-only)
|
||||||
*
|
*
|
||||||
* This method is called from BootReceiver when BOOT_COMPLETED is received.
|
* This method is called from BootReceiver when BOOT_COMPLETED is received.
|
||||||
* It runs asynchronously with timeout protection to avoid blocking boot.
|
* It runs asynchronously with timeout protection to avoid blocking boot.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
**Owner:** Development Team
|
**Owner:** Development Team
|
||||||
**Last Updated:** 2025-12-23
|
**Last Updated:** 2025-12-23
|
||||||
**Status:** active
|
**Status:** active
|
||||||
**Baseline:** See `docs/progress/00-STATUS.md` for current baseline tag
|
**Baseline:** See `doc/progress/00-STATUS.md` for current baseline tag
|
||||||
|
|
||||||
This index provides organized access to all documentation in the repository. For a complete audit trail of file movements, see [CONSOLIDATION_SOURCE_MAP.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_SOURCE_MAP.md).
|
This index provides organized access to all documentation in the repository. For a complete audit trail of file movements, see [CONSOLIDATION_SOURCE_MAP.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_SOURCE_MAP.md).
|
||||||
|
|
||||||
@@ -14,12 +14,12 @@ This index provides organized access to all documentation in the repository. For
|
|||||||
|
|
||||||
These are **policy-as-code**. Any gate (push, release, publish) MUST call `./ci/run.sh`.
|
These are **policy-as-code**. Any gate (push, release, publish) MUST call `./ci/run.sh`.
|
||||||
|
|
||||||
- **System Invariants:** `docs/SYSTEM_INVARIANTS.md` — Single authoritative document naming and explaining all enforced invariants
|
- **System Invariants:** `doc/SYSTEM_INVARIANTS.md` — Single authoritative document naming and explaining all enforced invariants
|
||||||
- **Local CI Contract:** `./ci/run.sh` — Single source of truth for CI/release gates
|
- **Local CI Contract:** `./ci/run.sh` — Single source of truth for CI/release gates
|
||||||
- **Verification / Invariants:** `./scripts/verify.sh` — Encodes packaging, core-purity, and build invariants
|
- **Verification / Invariants:** `./scripts/verify.sh` — Encodes packaging, core-purity, and build invariants
|
||||||
- **CI Usage & Setup:** `ci/README.md` — Local CI documentation
|
- **CI Usage & Setup:** `ci/README.md` — Local CI documentation
|
||||||
- **Performance Characteristics:** `docs/PERFORMANCE.md` — Performance characteristics and benchmarks
|
- **Performance Characteristics:** `doc/PERFORMANCE.md` — Performance characteristics and benchmarks
|
||||||
- **Troubleshooting Guide:** `docs/TROUBLESHOOTING.md` — Common issues and solutions
|
- **Troubleshooting Guide:** `doc/TROUBLESHOOTING.md` — Common issues and solutions
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -55,15 +55,15 @@ These files define the current truth about project state, decisions, and verific
|
|||||||
|
|
||||||
## Archive & Reference-only
|
## Archive & Reference-only
|
||||||
|
|
||||||
- **`docs/_archive/`** — Historical artifacts, preserved for audit trail (not part of active doc surface)
|
- **`doc/_archive/`** — Historical artifacts, preserved for audit trail (not part of active doc surface)
|
||||||
- `docs/_archive/PR_DESCRIPTION.md`, `MERGE_READY_SUMMARY.md` — One-off PR/merge artifacts (2025-10)
|
- `doc/_archive/PR_DESCRIPTION.md`, `MERGE_READY_SUMMARY.md` — One-off PR/merge artifacts (2025-10)
|
||||||
- `docs/_archive/2025-legacy-doc/` — Legacy documentation from 2025
|
- `doc/_archive/2025-legacy-doc/` — Legacy documentation from 2025
|
||||||
- [IMPLEMENTATION_CHECKLIST_LEGACY.md](./_archive/2025-legacy-doc/IMPLEMENTATION_CHECKLIST_LEGACY.md) — iOS Phase 1 checklist (historical)
|
- [IMPLEMENTATION_CHECKLIST_LEGACY.md](./_archive/2025-legacy-doc/IMPLEMENTATION_CHECKLIST_LEGACY.md) — iOS Phase 1 checklist (historical)
|
||||||
- `docs/_archive/2025-12-16-consolidation/` — 2025-12-16 consolidation artifacts (audit trail)
|
- `doc/_archive/2025-12-16-consolidation/` — 2025-12-16 consolidation artifacts (audit trail)
|
||||||
- [CONSOLIDATION_COMPLETE.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_COMPLETE.md) — Consolidation completion summary
|
- [CONSOLIDATION_COMPLETE.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_COMPLETE.md) — Consolidation completion summary
|
||||||
- [CONSOLIDATION_SOURCE_MAP.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_SOURCE_MAP.md) — Complete file mapping (139 files)
|
- [CONSOLIDATION_SOURCE_MAP.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_SOURCE_MAP.md) — Complete file mapping (139 files)
|
||||||
- **`docs/_reference/`** — Reference templates (not used by current workflow)
|
- **`doc/_reference/`** — Reference templates (not used by current workflow)
|
||||||
- `docs/_reference/github-actions-ci.yml` — GitHub Actions CI template (reference only)
|
- `doc/_reference/github-actions-ci.yml` — GitHub Actions CI template (reference only)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ These files define the current truth about project state, decisions, and verific
|
|||||||
|
|
||||||
1. **[README.md](../README.md)** - Project overview and getting started
|
1. **[README.md](../README.md)** - Project overview and getting started
|
||||||
2. **[ARCHITECTURE.md](../ARCHITECTURE.md)** - System architecture
|
2. **[ARCHITECTURE.md](../ARCHITECTURE.md)** - System architecture
|
||||||
3. **[docs/integration/QUICK_START.md](./integration/QUICK_START.md)** - Quick integration guide
|
3. **[doc/integration/QUICK_START.md](./integration/QUICK_START.md)** - Quick integration guide
|
||||||
4. **[BUILDING.md](../BUILDING.md)** - Build instructions
|
4. **[BUILDING.md](../BUILDING.md)** - Build instructions
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -95,7 +95,7 @@ These files define the current truth about project state, decisions, and verific
|
|||||||
|
|
||||||
## Integration Documentation
|
## Integration Documentation
|
||||||
|
|
||||||
**Location:** `docs/integration/`
|
**Location:** `doc/integration/`
|
||||||
|
|
||||||
- **[INTEGRATION_GUIDE.md](./integration/INTEGRATION_GUIDE.md)** - Complete integration guide
|
- **[INTEGRATION_GUIDE.md](./integration/INTEGRATION_GUIDE.md)** - Complete integration guide
|
||||||
- **[QUICK_START.md](./integration/QUICK_START.md)** - Quick integration path
|
- **[QUICK_START.md](./integration/QUICK_START.md)** - Quick integration path
|
||||||
@@ -109,7 +109,7 @@ These files define the current truth about project state, decisions, and verific
|
|||||||
|
|
||||||
### iOS
|
### iOS
|
||||||
|
|
||||||
**Location:** `docs/platform/ios/`
|
**Location:** `doc/platform/ios/`
|
||||||
|
|
||||||
- **[IOS_IMPLEMENTATION_CHECKLIST.md](./platform/ios/IOS_IMPLEMENTATION_CHECKLIST.md)** - iOS implementation checklist
|
- **[IOS_IMPLEMENTATION_CHECKLIST.md](./platform/ios/IOS_IMPLEMENTATION_CHECKLIST.md)** - iOS implementation checklist
|
||||||
- **[IMPLEMENTATION_DIRECTIVE.md](./platform/ios/IMPLEMENTATION_DIRECTIVE.md)** - iOS implementation directive
|
- **[IMPLEMENTATION_DIRECTIVE.md](./platform/ios/IMPLEMENTATION_DIRECTIVE.md)** - iOS implementation directive
|
||||||
@@ -124,7 +124,7 @@ These files define the current truth about project state, decisions, and verific
|
|||||||
|
|
||||||
### Android
|
### Android
|
||||||
|
|
||||||
**Location:** `docs/platform/android/`
|
**Location:** `doc/platform/android/`
|
||||||
|
|
||||||
- **[IMPLEMENTATION_DIRECTIVE.md](./platform/android/IMPLEMENTATION_DIRECTIVE.md)** - Primary Android implementation directive
|
- **[IMPLEMENTATION_DIRECTIVE.md](./platform/android/IMPLEMENTATION_DIRECTIVE.md)** - Primary Android implementation directive
|
||||||
- **[PHASE1_DIRECTIVE.md](./platform/android/PHASE1_DIRECTIVE.md)** - Phase 1 directive
|
- **[PHASE1_DIRECTIVE.md](./platform/android/PHASE1_DIRECTIVE.md)** - Phase 1 directive
|
||||||
@@ -140,7 +140,7 @@ These files define the current truth about project state, decisions, and verific
|
|||||||
|
|
||||||
## Testing Documentation
|
## Testing Documentation
|
||||||
|
|
||||||
**Location:** `docs/testing/`
|
**Location:** `doc/testing/`
|
||||||
|
|
||||||
### General Testing
|
### General Testing
|
||||||
|
|
||||||
@@ -183,7 +183,7 @@ Test app-specific documentation remains with the test apps but is indexed here:
|
|||||||
|
|
||||||
## Alarm System Documentation
|
## Alarm System Documentation
|
||||||
|
|
||||||
**Location:** `docs/alarms/`
|
**Location:** `doc/alarms/`
|
||||||
|
|
||||||
The alarm system documentation is well-organized and kept in its current location:
|
The alarm system documentation is well-organized and kept in its current location:
|
||||||
|
|
||||||
@@ -203,7 +203,7 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
|
|
||||||
## Design & Research Documentation
|
## Design & Research Documentation
|
||||||
|
|
||||||
**Location:** `docs/design/`
|
**Location:** `doc/design/`
|
||||||
|
|
||||||
- **[STARRED_PROJECTS_POLLING_IMPLEMENTATION.md](./design/STARRED_PROJECTS_POLLING_IMPLEMENTATION.md)** - Starred projects polling implementation
|
- **[STARRED_PROJECTS_POLLING_IMPLEMENTATION.md](./design/STARRED_PROJECTS_POLLING_IMPLEMENTATION.md)** - Starred projects polling implementation
|
||||||
- **[exploration-findings-initial.md](./design/exploration-findings-initial.md)** - Initial exploration findings
|
- **[exploration-findings-initial.md](./design/exploration-findings-initial.md)** - Initial exploration findings
|
||||||
@@ -215,7 +215,7 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
|
|
||||||
## Architecture (Storage & Core Tech)
|
## Architecture (Storage & Core Tech)
|
||||||
|
|
||||||
**Location:** `docs/architecture/`
|
**Location:** `doc/architecture/`
|
||||||
|
|
||||||
- **[CROSS_PLATFORM_STORAGE_PATTERN.md](./architecture/CROSS_PLATFORM_STORAGE_PATTERN.md)** - Cross-platform storage pattern
|
- **[CROSS_PLATFORM_STORAGE_PATTERN.md](./architecture/CROSS_PLATFORM_STORAGE_PATTERN.md)** - Cross-platform storage pattern
|
||||||
- **[DATABASE_INTERFACES.md](./architecture/DATABASE_INTERFACES.md)** - Database interfaces
|
- **[DATABASE_INTERFACES.md](./architecture/DATABASE_INTERFACES.md)** - Database interfaces
|
||||||
@@ -226,7 +226,7 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
|
||||||
**Location:** `docs/deployment/`
|
**Location:** `doc/deployment/`
|
||||||
|
|
||||||
- **[deployment-guide.md](./deployment/deployment-guide.md)** - Deployment guide (primary)
|
- **[deployment-guide.md](./deployment/deployment-guide.md)** - Deployment guide (primary)
|
||||||
- **[DEPLOYMENT_CHECKLIST.md](./deployment/DEPLOYMENT_CHECKLIST.md)** - Deployment checklist
|
- **[DEPLOYMENT_CHECKLIST.md](./deployment/DEPLOYMENT_CHECKLIST.md)** - Deployment checklist
|
||||||
@@ -235,7 +235,7 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
|
|
||||||
## Compliance & Operations
|
## Compliance & Operations
|
||||||
|
|
||||||
**Location:** `docs/compliance/`
|
**Location:** `doc/compliance/`
|
||||||
|
|
||||||
- **[accessibility-localization.md](./compliance/accessibility-localization.md)** - Accessibility and localization
|
- **[accessibility-localization.md](./compliance/accessibility-localization.md)** - Accessibility and localization
|
||||||
- **[legal-store-compliance.md](./compliance/legal-store-compliance.md)** - Legal and store compliance
|
- **[legal-store-compliance.md](./compliance/legal-store-compliance.md)** - Legal and store compliance
|
||||||
@@ -245,7 +245,7 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
|
|
||||||
## Feature-Specific (Integration, Design, Progress)
|
## Feature-Specific (Integration, Design, Progress)
|
||||||
|
|
||||||
### Integration (`docs/integration/`)
|
### Integration (`doc/integration/`)
|
||||||
|
|
||||||
- **[getting-valid-plan-ids.md](./integration/getting-valid-plan-ids.md)** - Getting valid plan IDs
|
- **[getting-valid-plan-ids.md](./integration/getting-valid-plan-ids.md)** - Getting valid plan IDs
|
||||||
- **[host-request-configuration.md](./integration/host-request-configuration.md)** - Host request configuration
|
- **[host-request-configuration.md](./integration/host-request-configuration.md)** - Host request configuration
|
||||||
@@ -254,7 +254,7 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
- **[capacitor-platform-service-clean-changes.md](./integration/capacitor-platform-service-clean-changes.md)** - Capacitor platform service changes
|
- **[capacitor-platform-service-clean-changes.md](./integration/capacitor-platform-service-clean-changes.md)** - Capacitor platform service changes
|
||||||
- **[ACTION_PLAN_INTEGRATION_FIXES.md](./integration/ACTION_PLAN_INTEGRATION_FIXES.md)** - Integration fixes action plan
|
- **[ACTION_PLAN_INTEGRATION_FIXES.md](./integration/ACTION_PLAN_INTEGRATION_FIXES.md)** - Integration fixes action plan
|
||||||
|
|
||||||
### Design (`docs/design/`) — plans, prefetch, recovery
|
### Design (`doc/design/`) — plans, prefetch, recovery
|
||||||
|
|
||||||
- **[P1.5-CONSOLIDATION-PLAN.md](./design/P1.5-CONSOLIDATION-PLAN.md)** - P1.5 consolidation plan
|
- **[P1.5-CONSOLIDATION-PLAN.md](./design/P1.5-CONSOLIDATION-PLAN.md)** - P1.5 consolidation plan
|
||||||
- **[P1.5-STEP4-CLUSTERS.md](./design/P1.5-STEP4-CLUSTERS.md)** - P1.5 step 4 clusters
|
- **[P1.5-STEP4-CLUSTERS.md](./design/P1.5-STEP4-CLUSTERS.md)** - P1.5 step 4 clusters
|
||||||
@@ -266,12 +266,12 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
- **[app-startup-recovery-solution.md](./design/app-startup-recovery-solution.md)** - App startup recovery solution
|
- **[app-startup-recovery-solution.md](./design/app-startup-recovery-solution.md)** - App startup recovery solution
|
||||||
- **[plugin-requirements-implementation.md](./design/plugin-requirements-implementation.md)** - Plugin requirements implementation
|
- **[plugin-requirements-implementation.md](./design/plugin-requirements-implementation.md)** - Plugin requirements implementation
|
||||||
|
|
||||||
### Progress (`docs/progress/`)
|
### Progress (`doc/progress/`)
|
||||||
|
|
||||||
- **[DEPLOYMENT_SUMMARY.md](./progress/DEPLOYMENT_SUMMARY.md)** - Deployment summary
|
- **[DEPLOYMENT_SUMMARY.md](./progress/DEPLOYMENT_SUMMARY.md)** - Deployment summary
|
||||||
- **[TODO-CLASSIFICATION.md](./progress/TODO-CLASSIFICATION.md)** - TODO classification
|
- **[TODO-CLASSIFICATION.md](./progress/TODO-CLASSIFICATION.md)** - TODO classification
|
||||||
|
|
||||||
### Platform — Android (`docs/platform/android/`)
|
### Platform — Android (`doc/platform/android/`)
|
||||||
|
|
||||||
- **[CONSUMING_APP_ANDROID_NOTES.md](./platform/android/CONSUMING_APP_ANDROID_NOTES.md)** - Consuming app Android notes
|
- **[CONSUMING_APP_ANDROID_NOTES.md](./platform/android/CONSUMING_APP_ANDROID_NOTES.md)** - Consuming app Android notes
|
||||||
- **[CONSUMING_APP_OPTIONAL_ANDROID_ID_CLEANUP.md](./platform/android/CONSUMING_APP_OPTIONAL_ANDROID_ID_CLEANUP.md)** - Optional Android ID cleanup
|
- **[CONSUMING_APP_OPTIONAL_ANDROID_ID_CLEANUP.md](./platform/android/CONSUMING_APP_OPTIONAL_ANDROID_ID_CLEANUP.md)** - Optional Android ID cleanup
|
||||||
@@ -289,7 +289,7 @@ The alarm system documentation is well-organized and kept in its current locatio
|
|||||||
|
|
||||||
## AI / Prompting / Automation Artifacts
|
## AI / Prompting / Automation Artifacts
|
||||||
|
|
||||||
**Location:** `docs/ai/`
|
**Location:** `doc/ai/`
|
||||||
|
|
||||||
These are derived operational artifacts for AI-assisted development:
|
These are derived operational artifacts for AI-assisted development:
|
||||||
|
|
||||||
@@ -305,7 +305,7 @@ These are derived operational artifacts for AI-assisted development:
|
|||||||
|
|
||||||
## Archive Documentation
|
## Archive Documentation
|
||||||
|
|
||||||
**Location:** `docs/archive/2025-legacy-doc/`
|
**Location:** `doc/archive/2025-legacy-doc/`
|
||||||
|
|
||||||
Historical documentation preserved verbatim. See [CONSOLIDATION_SOURCE_MAP.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_SOURCE_MAP.md) for complete archive listing.
|
Historical documentation preserved verbatim. See [CONSOLIDATION_SOURCE_MAP.md](./_archive/2025-12-16-consolidation/CONSOLIDATION_SOURCE_MAP.md) for complete archive listing.
|
||||||
|
|
||||||
@@ -325,20 +325,20 @@ Historical documentation preserved verbatim. See [CONSOLIDATION_SOURCE_MAP.md](.
|
|||||||
|
|
||||||
| Category | Count | Location |
|
| Category | Count | Location |
|
||||||
|----------|-------|----------|
|
|----------|-------|----------|
|
||||||
| **Core Documentation** | 8 | Root + `docs/` |
|
| **Core Documentation** | 8 | Root + `doc/` |
|
||||||
| **Integration** | 5 | `docs/integration/` |
|
| **Integration** | 5 | `doc/integration/` |
|
||||||
| **Platform (iOS)** | 10 | `docs/platform/ios/` |
|
| **Platform (iOS)** | 10 | `doc/platform/ios/` |
|
||||||
| **Platform (Android)** | 9 | `docs/platform/android/` |
|
| **Platform (Android)** | 9 | `doc/platform/android/` |
|
||||||
| **Testing** | 13 | `docs/testing/` |
|
| **Testing** | 13 | `doc/testing/` |
|
||||||
| **Alarms** | 11 | `docs/alarms/` |
|
| **Alarms** | 11 | `doc/alarms/` |
|
||||||
| **Design & Research** | 5 | `docs/design/` |
|
| **Design & Research** | 5 | `doc/design/` |
|
||||||
| **Architecture** | 4 | `docs/architecture/` |
|
| **Architecture** | 4 | `doc/architecture/` |
|
||||||
| **Deployment** | 2 | `docs/deployment/` |
|
| **Deployment** | 2 | `doc/deployment/` |
|
||||||
| **Compliance** | 3 | `docs/compliance/` |
|
| **Compliance** | 3 | `doc/compliance/` |
|
||||||
| **Feature-Specific (integration, design, progress, platform)** | 14 | `docs/integration/`, `docs/design/`, `docs/progress/`, `docs/platform/android/` |
|
| **Feature-Specific (integration, design, progress, platform)** | 14 | `doc/integration/`, `doc/design/`, `doc/progress/`, `doc/platform/android/` |
|
||||||
| **AI Artifacts** | 7 | `docs/ai/` |
|
| **AI Artifacts** | 7 | `doc/ai/` |
|
||||||
| **Test Apps** | 20+ | `test-apps/*/` |
|
| **Test Apps** | 20+ | `test-apps/*/` |
|
||||||
| **Archive** | 29 | `docs/archive/2025-legacy-doc/` |
|
| **Archive** | 29 | `doc/archive/2025-legacy-doc/` |
|
||||||
|
|
||||||
### By Status
|
### By Status
|
||||||
|
|
||||||
@@ -365,9 +365,9 @@ Historical documentation preserved verbatim. See [CONSOLIDATION_SOURCE_MAP.md](.
|
|||||||
|
|
||||||
### By Platform
|
### By Platform
|
||||||
|
|
||||||
- **iOS** → `docs/platform/ios/`
|
- **iOS** → `doc/platform/ios/`
|
||||||
- **Android** → `docs/platform/android/`
|
- **Android** → `doc/platform/android/`
|
||||||
- **Cross-Platform** → `docs/alarms/`, `docs/integration/`
|
- **Cross-Platform** → `doc/alarms/`, `doc/integration/`
|
||||||
|
|
||||||
### By Phase
|
### By Phase
|
||||||
|
|
||||||
@@ -381,7 +381,7 @@ Historical documentation preserved verbatim. See [CONSOLIDATION_SOURCE_MAP.md](.
|
|||||||
|
|
||||||
### Updating This Index
|
### Updating This Index
|
||||||
|
|
||||||
**Index-first rule:** New docs must be linked from `docs/00-INDEX.md` or explicitly placed under `_archive/` / `_reference/`.
|
**Index-first rule:** New docs must be linked from `doc/00-INDEX.md` or explicitly placed under `_archive/` / `_reference/`.
|
||||||
|
|
||||||
When adding new documentation:
|
When adding new documentation:
|
||||||
|
|
||||||
@@ -0,0 +1,280 @@
|
|||||||
|
# Documentation Consolidation Source Map
|
||||||
|
|
||||||
|
**Date:** 2025-12-16
|
||||||
|
**Purpose:** Complete audit trail of all markdown file destinations during consolidation
|
||||||
|
**Total Files Mapped:** 139
|
||||||
|
|
||||||
|
This document guarantees no information loss by tracking every file's destination.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Legend
|
||||||
|
|
||||||
|
- **Canonical**: File kept in active documentation, possibly edited/merged
|
||||||
|
- **Merged**: Content incorporated into canonical document, original archived
|
||||||
|
- **Archived**: File preserved verbatim in archive, referenced from index
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Root Canonical Files (Keep As-Is)
|
||||||
|
|
||||||
|
**Note (2025-03):** The following were moved after consolidation: `TODO.md` → `doc/progress/TODO.md`; `TODAY_SUMMARY.md` → `doc/progress/TODAY_SUMMARY.md`; `SESSION_RECONSTITUTION.md` → `doc/progress/SESSION_RECONSTITUTION.md`; `BATCH_A_COMPLETION_SUMMARY.md` → `doc/progress/BATCH_A_COMPLETION_SUMMARY.md`; `PR_DESCRIPTION.md` → `doc/_archive/PR_DESCRIPTION.md`; `MERGE_READY_SUMMARY.md` → `doc/_archive/MERGE_READY_SUMMARY.md`.
|
||||||
|
|
||||||
|
| Original Path | Status | Notes |
|
||||||
|
|--------------|--------|-------|
|
||||||
|
| `README.md` | Canonical | Main entry point, will link to doc/00-INDEX.md |
|
||||||
|
| `ARCHITECTURE.md` | Canonical | Foundational architecture document |
|
||||||
|
| `BUILDING.md` | Canonical | Build instructions |
|
||||||
|
| `CHANGELOG.md` | Canonical | Version history |
|
||||||
|
| `CONTRIBUTING.md` | Canonical | Contribution guidelines |
|
||||||
|
| `SECURITY.md` | Canonical | Security documentation |
|
||||||
|
| `API.md` | Canonical | API reference |
|
||||||
|
| `USAGE.md` | Canonical | Usage guide |
|
||||||
|
| `TODO.md` | Moved | → `doc/progress/TODO.md` |
|
||||||
|
| `PR_DESCRIPTION.md` | Moved | → `doc/_archive/PR_DESCRIPTION.md` |
|
||||||
|
| `MERGE_READY_SUMMARY.md` | Moved | → `doc/_archive/MERGE_READY_SUMMARY.md` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Integration Documentation (Consolidate to `doc/integration/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `INTEGRATION_GUIDE.md` | `doc/integration/INTEGRATION_GUIDE.md` | Canonical | Primary integration guide |
|
||||||
|
| `QUICK_INTEGRATION.md` | `doc/integration/QUICK_START.md` | Canonical | Quick start guide |
|
||||||
|
| `AI_INTEGRATION_GUIDE.md` | `doc/ai/AI_INTEGRATION_GUIDE.md` | Canonical | AI-specific integration |
|
||||||
|
| `doc/INTEGRATION_CHECKLIST.md` | `doc/integration/CHECKLIST.md` | Merged | Merge into INTEGRATION_GUIDE.md |
|
||||||
|
| `doc/INTEGRATION_REFACTOR_CONTEXT.md` | `doc/integration/REFACTOR_NOTES.md` | Merged | Merge context into refactor notes |
|
||||||
|
| `doc/INTEGRATION_REFACTOR_QUICK_START.md` | `doc/integration/REFACTOR_NOTES.md` | Merged | Merge into refactor notes |
|
||||||
|
| `doc/aar-integration-troubleshooting.md` | `doc/integration/TROUBLESHOOTING.md` | Merged | Merge into troubleshooting guide |
|
||||||
|
| `doc/integration-point-refactor-analysis.md` | `doc/integration/REFACTOR_NOTES.md` | Merged | Merge into refactor notes |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Legacy Documentation (Archive to `doc/archive/2025-legacy-doc/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `doc/BACKGROUND_DATA_FETCHING_PLAN.md` | `doc/archive/2025-legacy-doc/BACKGROUND_DATA_FETCHING_PLAN.md` | Archived | Historical planning doc |
|
||||||
|
| `doc/BUILD_FIXES_SUMMARY.md` | `doc/archive/2025-legacy-doc/BUILD_FIXES_SUMMARY.md` | Archived | Historical build fixes |
|
||||||
|
| `doc/BUILD_SCRIPT_IMPROVEMENTS.md` | `doc/archive/2025-legacy-doc/BUILD_SCRIPT_IMPROVEMENTS.md` | Archived | Historical build improvements |
|
||||||
|
| `doc/directives/0001-Daily-Notification-Plugin-Implementation-Directive.md` | `doc/archive/2025-legacy-doc/directives/0001-Daily-Notification-Plugin-Implementation-Directive.md` | Archived | Historical directive |
|
||||||
|
| `doc/directives/0002-Daily-Notification-Plugin-Recommendations.md` | `doc/archive/2025-legacy-doc/directives/0002-Daily-Notification-Plugin-Recommendations.md` | Archived | Historical recommendations |
|
||||||
|
| `doc/directives/0003-iOS-Android-Parity-Directive.md` | `doc/archive/2025-legacy-doc/directives/0003-iOS-Android-Parity-Directive.md` | Archived | Historical directive |
|
||||||
|
| `doc/implementation-roadmap.md` | `doc/archive/2025-legacy-doc/implementation-roadmap.md` | Archived | Historical roadmap |
|
||||||
|
| `doc/IOS_ANDROID_ERROR_CODE_MAPPING.md` | `doc/archive/2025-legacy-doc/IOS_ANDROID_ERROR_CODE_MAPPING.md` | Archived | Historical mapping |
|
||||||
|
| `doc/IOS_PHASE1_FINAL_SUMMARY.md` | `doc/archive/2025-legacy-doc/IOS_PHASE1_FINAL_SUMMARY.md` | Archived | Historical summary |
|
||||||
|
| `doc/IOS_PHASE1_GAPS_ANALYSIS.md` | `doc/archive/2025-legacy-doc/IOS_PHASE1_GAPS_ANALYSIS.md` | Archived | Historical analysis |
|
||||||
|
| `doc/IOS_PHASE1_IMPLEMENTATION_CHECKLIST.md` | `doc/platform/ios/IMPLEMENTATION_CHECKLIST.md` | Merged | Promote to canonical iOS docs |
|
||||||
|
| `doc/IOS_PHASE1_QUICK_REFERENCE.md` | `doc/archive/2025-legacy-doc/IOS_PHASE1_QUICK_REFERENCE.md` | Archived | Historical quick reference |
|
||||||
|
| `doc/IOS_PHASE1_READY_FOR_TESTING.md` | `doc/archive/2025-legacy-doc/IOS_PHASE1_READY_FOR_TESTING.md` | Archived | Historical testing status |
|
||||||
|
| `doc/IOS_PHASE1_TESTING_GUIDE.md` | `doc/testing/IOS_PHASE1_TESTING_GUIDE.md` | Merged | Promote to testing docs |
|
||||||
|
| `doc/IOS_TEST_APP_SETUP_GUIDE.md` | `doc/testing/IOS_TEST_APP_SETUP.md` | Merged | Promote to testing docs |
|
||||||
|
| `doc/migration-guide.md` | `doc/platform/ios/MIGRATION_GUIDE.md` | Merged | Promote to canonical iOS docs |
|
||||||
|
| `doc/notification-system.md` | `doc/archive/2025-legacy-doc/notification-system.md` | Archived | Historical system doc |
|
||||||
|
| `doc/PHASE1_COMPLETION_SUMMARY.md` | `doc/archive/2025-legacy-doc/PHASE1_COMPLETION_SUMMARY.md` | Archived | Historical summary |
|
||||||
|
| `doc/RESEARCH_COMPLETE.md` | `doc/archive/2025-legacy-doc/RESEARCH_COMPLETE.md` | Archived | Historical research doc |
|
||||||
|
| `doc/STARRED_PROJECTS_POLLING_IMPLEMENTATION.md` | `doc/design/STARRED_PROJECTS_POLLING_IMPLEMENTATION.md` | Canonical | Promote to design docs (large, relevant) |
|
||||||
|
| `doc/test-app-ios/ENHANCEMENTS_APPLIED.md` | `doc/archive/2025-legacy-doc/test-app-ios/ENHANCEMENTS_APPLIED.md` | Archived | Historical enhancements |
|
||||||
|
| `doc/test-app-ios/IOS_LOGGING_GUIDE.md` | `doc/testing/IOS_LOGGING_GUIDE.md` | Merged | Promote to testing docs |
|
||||||
|
| `doc/test-app-ios/IOS_PREFETCH_GLOSSARY.md` | `doc/platform/ios/PREFETCH_GLOSSARY.md` | Merged | Promote to iOS docs |
|
||||||
|
| `doc/test-app-ios/IOS_PREFETCH_TESTING.md` | `doc/testing/IOS_PREFETCH_TESTING.md` | Merged | Promote to testing docs |
|
||||||
|
| `doc/test-app-ios/IOS_TEST_APP_REQUIREMENTS.md` | `doc/testing/IOS_TEST_APP_REQUIREMENTS.md` | Merged | Promote to testing docs |
|
||||||
|
| `doc/UI_REQUIREMENTS.md` | `doc/archive/2025-legacy-doc/UI_REQUIREMENTS.md` | Archived | Historical requirements |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Platform Documentation - iOS (Consolidate to `doc/platform/ios/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `doc/IOS_IMPLEMENTATION_CHECKLIST.md` | `doc/platform/ios/IMPLEMENTATION_CHECKLIST.md` | Canonical | Primary iOS checklist |
|
||||||
|
| `doc/ios-implementation-directive.md` | `doc/platform/ios/IMPLEMENTATION_DIRECTIVE.md` | Canonical | iOS implementation directive |
|
||||||
|
| `doc/IOS_IMPLEMENTATION_DOCUMENTATION_REVIEW.md` | `doc/platform/ios/DOCUMENTATION_REVIEW.md` | Canonical | Documentation review |
|
||||||
|
| `doc/ios-core-data-migration.md` | `doc/platform/ios/CORE_DATA_MIGRATION.md` | Canonical | Core Data migration guide |
|
||||||
|
| `doc/ios-recovery-scenario-mapping.md` | `doc/platform/ios/RECOVERY_SCENARIO_MAPPING.md` | Canonical | Recovery scenario mapping |
|
||||||
|
| `doc/ios-rollover-edge-case-plan.md` | `doc/platform/ios/ROLLOVER_EDGE_CASES.md` | Canonical | Rollover edge cases |
|
||||||
|
| `doc/ios-rollover-implementation-review.md` | `doc/platform/ios/ROLLOVER_IMPLEMENTATION_REVIEW.md` | Canonical | Rollover implementation review |
|
||||||
|
| `doc/ios-rollover-open-questions-answers.md` | `doc/platform/ios/ROLLOVER_QA.md` | Canonical | Rollover Q&A |
|
||||||
|
| `doc/ios-troubleshooting-guide.md` | `doc/platform/ios/TROUBLESHOOTING.md` | Canonical | iOS troubleshooting |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Platform Documentation - Android (Consolidate to `doc/platform/android/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `doc/android-implementation-directive.md` | `doc/platform/android/IMPLEMENTATION_DIRECTIVE.md` | Canonical | Primary Android directive |
|
||||||
|
| `doc/android-implementation-directive-phase1.md` | `doc/platform/android/PHASE1_DIRECTIVE.md` | Canonical | Phase 1 directive |
|
||||||
|
| `doc/android-implementation-directive-phase2.md` | `doc/platform/android/PHASE2_DIRECTIVE.md` | Canonical | Phase 2 directive |
|
||||||
|
| `doc/android-implementation-directive-phase3.md` | `doc/platform/android/PHASE3_DIRECTIVE.md` | Canonical | Phase 3 directive |
|
||||||
|
| `doc/android-alarm-persistence-directive.md` | `doc/platform/android/ALARM_PERSISTENCE_DIRECTIVE.md` | Canonical | Alarm persistence directive |
|
||||||
|
| `doc/android-app-analysis.md` | `doc/platform/android/APP_ANALYSIS.md` | Canonical | App analysis |
|
||||||
|
| `doc/android-app-improvement-plan.md` | `doc/platform/android/APP_IMPROVEMENT_PLAN.md` | Canonical | App improvement plan |
|
||||||
|
| `android/BUILDING.md` | `doc/platform/android/BUILDING.md` | Canonical | Android build guide |
|
||||||
|
| `android/DATABASE_CONSOLIDATION_PLAN.md` | `doc/platform/android/DATABASE_CONSOLIDATION_PLAN.md` | Canonical | Database consolidation plan |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Testing Documentation (Consolidate to `doc/testing/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `doc/comprehensive-testing-guide-v2.md` | `doc/testing/COMPREHENSIVE_GUIDE.md` | Canonical | Primary testing guide |
|
||||||
|
| `doc/testing-quick-reference.md` | `doc/testing/QUICK_REFERENCE.md` | Canonical | Quick reference |
|
||||||
|
| `doc/testing-quick-reference-v2.md` | `doc/testing/QUICK_REFERENCE.md` | Merged | Merge into QUICK_REFERENCE.md |
|
||||||
|
| `doc/manual_smoke_test.md` | `doc/testing/MANUAL_SMOKE_TEST.md` | Canonical | Manual smoke test |
|
||||||
|
| `doc/notification-testing-procedures.md` | `doc/testing/NOTIFICATION_PROCEDURES.md` | Canonical | Notification testing |
|
||||||
|
| `doc/reboot-testing-procedure.md` | `doc/testing/REBOOT_PROCEDURE.md` | Canonical | Reboot testing |
|
||||||
|
| `doc/reboot-testing-steps.md` | `doc/testing/REBOOT_PROCEDURE.md` | Merged | Merge into REBOOT_PROCEDURE.md |
|
||||||
|
| `doc/boot-receiver-testing-guide.md` | `doc/testing/BOOT_RECEIVER_GUIDE.md` | Canonical | Boot receiver testing |
|
||||||
|
| `doc/standalone-emulator-guide.md` | `doc/testing/EMULATOR_GUIDE.md` | Canonical | Emulator guide |
|
||||||
|
| `doc/localhost-testing-guide.md` | `doc/testing/LOCALHOST_GUIDE.md` | Canonical | Localhost testing |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Alarm System Documentation (Keep in `doc/alarms/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `doc/alarms/000-UNIFIED-ALARM-DIRECTIVE.md` | `doc/alarms/000-UNIFIED-ALARM-DIRECTIVE.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/01-platform-capability-reference.md` | `doc/alarms/01-platform-capability-reference.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/02-plugin-behavior-exploration.md` | `doc/alarms/02-plugin-behavior-exploration.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/03-plugin-requirements.md` | `doc/alarms/03-plugin-requirements.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/ACTIVATION-GUIDE.md` | `doc/alarms/ACTIVATION-GUIDE.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/PHASE1-EMULATOR-TESTING.md` | `doc/alarms/PHASE1-EMULATOR-TESTING.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/PHASE1-VERIFICATION.md` | `doc/alarms/PHASE1-VERIFICATION.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/PHASE2-EMULATOR-TESTING.md` | `doc/alarms/PHASE2-EMULATOR-TESTING.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/PHASE2-VERIFICATION.md` | `doc/alarms/PHASE2-VERIFICATION.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/PHASE3-EMULATOR-TESTING.md` | `doc/alarms/PHASE3-EMULATOR-TESTING.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/alarms/PHASE3-VERIFICATION.md` | `doc/alarms/PHASE3-VERIFICATION.md` | Canonical | Keep as-is |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## AI / ChatGPT Documentation (Consolidate to `doc/ai/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `chatgpt-assessment-package.md` | `doc/ai/chatgpt-assessment-package.md` | Canonical | AI artifacts |
|
||||||
|
| `chatgpt-files-overview.md` | `doc/ai/chatgpt-files-overview.md` | Canonical | AI artifacts |
|
||||||
|
| `chatgpt-improvement-directives-template.md` | `doc/ai/chatgpt-improvement-directives-template.md` | Canonical | AI artifacts |
|
||||||
|
| `code-summary-for-chatgpt.md` | `doc/ai/code-summary-for-chatgpt.md` | Canonical | AI artifacts |
|
||||||
|
| `key-code-snippets-for-chatgpt.md` | `doc/ai/key-code-snippets-for-chatgpt.md` | Canonical | AI artifacts |
|
||||||
|
| `doc/chatgpt-analysis-guide.md` | `doc/ai/chatgpt-analysis-guide.md` | Canonical | AI artifacts |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Design & Research Documentation (Consolidate to `doc/design/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `doc/exploration-findings-initial.md` | `doc/design/exploration-findings-initial.md` | Canonical | Design research |
|
||||||
|
| `doc/explore-alarm-behavior-directive.md` | `doc/design/explore-alarm-behavior-directive.md` | Canonical | Design research |
|
||||||
|
| `doc/improve-alarm-directives.md` | `doc/design/improve-alarm-directives.md` | Canonical | Design research |
|
||||||
|
| `doc/plugin-behavior-exploration-template.md` | `doc/design/plugin-behavior-exploration-template.md` | Canonical | Design template |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Deployment Documentation (Keep in `doc/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `DEPLOYMENT_CHECKLIST.md` | `doc/DEPLOYMENT_CHECKLIST.md` | Canonical | Move to doc/ |
|
||||||
|
| `DEPLOYMENT_SUMMARY.md` | `doc/DEPLOYMENT_SUMMARY.md` | Canonical | Move to doc/ |
|
||||||
|
| `doc/deployment-guide.md` | `doc/DEPLOYMENT_GUIDE.md` | Canonical | Primary deployment guide |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Feature-Specific Documentation (Keep in `doc/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `doc/CROSS_PLATFORM_STORAGE_PATTERN.md` | `doc/CROSS_PLATFORM_STORAGE_PATTERN.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/DATABASE_INTERFACES.md` | `doc/DATABASE_INTERFACES.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/DATABASE_INTERFACES_IMPLEMENTATION.md` | `doc/DATABASE_INTERFACES_IMPLEMENTATION.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/NATIVE_FETCHER_CONFIGURATION.md` | `doc/NATIVE_FETCHER_CONFIGURATION.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/platform-capability-reference.md` | `doc/platform-capability-reference.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/plugin-requirements-implementation.md` | `doc/plugin-requirements-implementation.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/prefetch-scheduling-diagnosis.md` | `doc/prefetch-scheduling-diagnosis.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/prefetch-scheduling-trace.md` | `doc/prefetch-scheduling-trace.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/app-startup-recovery-solution.md` | `doc/app-startup-recovery-solution.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/getting-valid-plan-ids.md` | `doc/getting-valid-plan-ids.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/host-request-configuration.md` | `doc/host-request-configuration.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/hydrate-plan-implementation-guide.md` | `doc/hydrate-plan-implementation-guide.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/user-zero-stars-implementation.md` | `doc/user-zero-stars-implementation.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/accessibility-localization.md` | `doc/accessibility-localization.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/legal-store-compliance.md` | `doc/legal-store-compliance.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/observability-dashboards.md` | `doc/observability-dashboards.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/file-organization-summary.md` | `doc/file-organization-summary.md` | Canonical | Keep as-is |
|
||||||
|
| `doc/capacitor-platform-service-clean-changes.md` | `doc/capacitor-platform-service-clean-changes.md` | Canonical | Keep as-is |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Test App Documentation (Keep with Test Apps, Index in `doc/testing/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `test-apps/BUILD_PROCESS.md` | `test-apps/BUILD_PROCESS.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/android-test-app/doc/PHASE1_TEST0_GOLDEN.md` | `test-apps/android-test-app/doc/PHASE1_TEST0_GOLDEN.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/android-test-app/doc/PHASE1_TEST1_GOLDEN.md` | `test-apps/android-test-app/doc/PHASE1_TEST1_GOLDEN.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/doc/BUILD_QUICK_REFERENCE.md` | `test-apps/daily-notification-test/doc/BUILD_QUICK_REFERENCE.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/doc/NOTIFICATION_STACK_IMPROVEMENT_PLAN.md` | `test-apps/daily-notification-test/doc/NOTIFICATION_STACK_IMPROVEMENT_PLAN.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/doc/PLUGIN_DETECTION_GUIDE.md` | `test-apps/daily-notification-test/doc/PLUGIN_DETECTION_GUIDE.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/doc/VUE3_NOTIFICATION_IMPLEMENTATION_GUIDE.md` | `test-apps/daily-notification-test/doc/VUE3_NOTIFICATION_IMPLEMENTATION_GUIDE.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/IMPLEMENTATION_COMPLETE.md` | `test-apps/daily-notification-test/IMPLEMENTATION_COMPLETE.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/INVESTIGATION_JWT_ALGORITHM.md` | `test-apps/daily-notification-test/INVESTIGATION_JWT_ALGORITHM.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/INVESTIGATION_JWT_ALGORITHM_RESULTS.md` | `test-apps/daily-notification-test/INVESTIGATION_JWT_ALGORITHM_RESULTS.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/README.md` | `test-apps/daily-notification-test/README.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/daily-notification-test/TODO_NATIVE_FETCHER.md` | `test-apps/daily-notification-test/TODO_NATIVE_FETCHER.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/BUILD_NOTES.md` | `test-apps/ios-test-app/BUILD_NOTES.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/BUILD_SUCCESS.md` | `test-apps/ios-test-app/BUILD_SUCCESS.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/COMPILATION_FIXES.md` | `test-apps/ios-test-app/COMPILATION_FIXES.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/COMPILATION_STATUS.md` | `test-apps/ios-test-app/COMPILATION_STATUS.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/COMPILATION_SUMMARY.md` | `test-apps/ios-test-app/COMPILATION_SUMMARY.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/README.md` | `test-apps/ios-test-app/README.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/SETUP_COMPLETE.md` | `test-apps/ios-test-app/SETUP_COMPLETE.md` | Canonical | Keep with test apps |
|
||||||
|
| `test-apps/ios-test-app/SETUP_STATUS.md` | `test-apps/ios-test-app/SETUP_STATUS.md` | Canonical | Keep with test apps |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Plugin-Specific Documentation (Keep in `ios/Plugin/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `ios/Plugin/README.md` | `ios/Plugin/README.md` | Canonical | Keep with plugin code |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cursor Rules Documentation (Keep in `.cursor/rules/`)
|
||||||
|
|
||||||
|
| Original Path | New Path | Status | Notes |
|
||||||
|
|--------------|----------|--------|-------|
|
||||||
|
| `.cursor/rules/README.md` | `.cursor/rules/README.md` | Canonical | Keep with cursor rules |
|
||||||
|
| `.cursor/rules/architecture/README.md` | `.cursor/rules/architecture/README.md` | Canonical | Keep with cursor rules |
|
||||||
|
| `.cursor/rules/meta_rule_architecture.md` | `.cursor/rules/meta_rule_architecture.md` | Canonical | Keep with cursor rules |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Summary Statistics
|
||||||
|
|
||||||
|
- **Total Files:** 139
|
||||||
|
- **Canonical (Active):** ~95 files
|
||||||
|
- **Merged:** ~15 files
|
||||||
|
- **Archived:** ~29 files
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verification Checklist
|
||||||
|
|
||||||
|
- [ ] All 139 files have a destination
|
||||||
|
- [ ] No file is marked for deletion
|
||||||
|
- [ ] All merged content is traceable
|
||||||
|
- [ ] Archive structure preserves original paths
|
||||||
|
- [ ] Index references all canonical files
|
||||||
|
- [ ] README.md links to doc/00-INDEX.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Last Updated:** 2025-12-16
|
||||||
|
**Status:** Complete - Ready for Implementation
|
||||||
|
|
||||||
@@ -524,5 +524,5 @@ Integration is successful when:
|
|||||||
After successful integration:
|
After successful integration:
|
||||||
- Read [API.md](./API.md) for complete API reference
|
- Read [API.md](./API.md) for complete API reference
|
||||||
- Check [README.md](./README.md) for advanced usage
|
- Check [README.md](./README.md) for advanced usage
|
||||||
- Review [docs/notification-testing-procedures.md](./docs/notification-testing-procedures.md) for testing
|
- Review [doc/testing/NOTIFICATION_PROCEDURES.md](./testing/NOTIFICATION_PROCEDURES.md) for testing
|
||||||
|
|
||||||
@@ -157,11 +157,11 @@ android/plugin/src/main/java/com/timesafari/dailynotification/
|
|||||||
- `scripts/reboot-test.sh`: Reboot recovery testing
|
- `scripts/reboot-test.sh`: Reboot recovery testing
|
||||||
|
|
||||||
### **Documentation**
|
### **Documentation**
|
||||||
- `docs/boot-receiver-testing-guide.md`: Boot receiver testing
|
- `doc/testing/BOOT_RECEIVER_GUIDE.md`: Boot receiver testing
|
||||||
- `docs/app-startup-recovery-solution.md`: Recovery mechanism
|
- `doc/design/app-startup-recovery-solution.md`: Recovery mechanism
|
||||||
- `docs/notification-testing-procedures.md`: Manual testing
|
- `doc/testing/NOTIFICATION_PROCEDURES.md`: Manual testing
|
||||||
- `docs/reboot-testing-procedure.md`: Reboot testing
|
- `doc/testing/REBOOT_PROCEDURE.md`: Reboot testing
|
||||||
- `docs/testing-quick-reference.md`: Quick reference
|
- `doc/testing/QUICK_REFERENCE.md`: Quick reference
|
||||||
|
|
||||||
## 📊 Current Metrics
|
## 📊 Current Metrics
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ npm run deploy
|
|||||||
- **Annually**: Security reviews
|
- **Annually**: Security reviews
|
||||||
|
|
||||||
### Support
|
### Support
|
||||||
- **Documentation**: See `docs/` directory
|
- **Documentation**: See `doc/` directory
|
||||||
- **Troubleshooting**: See [deployment-guide.md](./deployment-guide.md)
|
- **Troubleshooting**: See [deployment-guide.md](./deployment-guide.md)
|
||||||
- **Monitoring**: See [observability-dashboards.md](../compliance/observability-dashboards.md)
|
- **Monitoring**: See [observability-dashboards.md](../compliance/observability-dashboards.md)
|
||||||
- **Compliance**: See [legal-store-compliance.md](../compliance/legal-store-compliance.md)
|
- **Compliance**: See [legal-store-compliance.md](../compliance/legal-store-compliance.md)
|
||||||
@@ -315,10 +315,10 @@ observability.configure({
|
|||||||
#### Dashboard Setup
|
#### Dashboard Setup
|
||||||
```bash
|
```bash
|
||||||
# Import sample dashboards
|
# Import sample dashboards
|
||||||
# See docs/compliance/observability-dashboards.md for Grafana/DataDog configurations
|
# See doc/compliance/observability-dashboards.md for Grafana/DataDog configurations
|
||||||
|
|
||||||
# Set up alerting rules
|
# Set up alerting rules
|
||||||
# See docs/compliance/observability-dashboards.md for Prometheus alerting
|
# See doc/compliance/observability-dashboards.md for Prometheus alerting
|
||||||
```
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
- **Nice-to-have**: 2 items (performance metrics/statistics)
|
- **Nice-to-have**: 2 items (performance metrics/statistics)
|
||||||
- **Future (Phase 2/3)**: 19 items (explicitly deferred features)
|
- **Future (Phase 2/3)**: 19 items (explicitly deferred features)
|
||||||
- **TypeScript Stubs**: 3 items (iOS-specific stubs)
|
- **TypeScript Stubs**: 3 items (iOS-specific stubs)
|
||||||
- [x] Create comprehensive classification document (`docs/TODO-CLASSIFICATION.md`)
|
- [x] Create comprehensive classification document (`doc/TODO-CLASSIFICATION.md`)
|
||||||
- [ ] Create issues for "must ship" items (7 issues needed)
|
- [ ] Create issues for "must ship" items (7 issues needed)
|
||||||
- [ ] Move "Phase 2" items behind feature flags or to planning docs
|
- [ ] Move "Phase 2" items behind feature flags or to planning docs
|
||||||
|
|
||||||
@@ -21,16 +21,16 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
1. **No deletion** — Archive or redirect, never lose context
|
1. **No deletion** — Archive or redirect, never lose context
|
||||||
2. **Elevate contracts** — `./ci/run.sh` and `./scripts/verify.sh` are policy-as-code
|
2. **Elevate contracts** — `./ci/run.sh` and `./scripts/verify.sh` are policy-as-code
|
||||||
3. **Progress docs are authoritative** — `docs/progress/` is the single source of truth for "where we are"
|
3. **Progress docs are authoritative** — `doc/progress/` is the single source of truth for "where we are"
|
||||||
4. **Drift guards** — Every doc has: Purpose, Owner, Last Updated, Status
|
4. **Drift guards** — Every doc has: Purpose, Owner, Last Updated, Status
|
||||||
5. **Index lists only active docs** — Archive is discoverable but not cluttering navigation
|
5. **Index lists only active docs** — Archive is discoverable but not cluttering navigation
|
||||||
6. **Index-first rule** — New docs must be linked from `docs/00-INDEX.md` or explicitly placed under `_archive/` / `_reference/`
|
6. **Index-first rule** — New docs must be linked from `doc/00-INDEX.md` or explicitly placed under `_archive/` / `_reference/`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## File-by-File Consolidation Plan
|
## File-by-File Consolidation Plan
|
||||||
|
|
||||||
### 1. Authoritative Index (`docs/00-INDEX.md`)
|
### 1. Authoritative Index (`doc/00-INDEX.md`)
|
||||||
|
|
||||||
**Action:** Update to reflect P0 + P1.4 baseline and elevate contracts
|
**Action:** Update to reflect P0 + P1.4 baseline and elevate contracts
|
||||||
|
|
||||||
@@ -40,12 +40,12 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
- `./scripts/verify.sh` — Verification script (encodes invariants)
|
- `./scripts/verify.sh` — Verification script (encodes invariants)
|
||||||
- `ci/README.md` — CI documentation
|
- `ci/README.md` — CI documentation
|
||||||
- Add **"Progress Tracking (Authoritative)"** section
|
- Add **"Progress Tracking (Authoritative)"** section
|
||||||
- `docs/progress/00-STATUS.md` — Current phase, blockers, next actions
|
- `doc/progress/00-STATUS.md` — Current phase, blockers, next actions
|
||||||
- `docs/progress/01-CHANGELOG-WORK.md` — Development changelog
|
- `doc/progress/01-CHANGELOG-WORK.md` — Development changelog
|
||||||
- `docs/progress/02-OPEN-QUESTIONS.md` — Open questions and decisions
|
- `doc/progress/02-OPEN-QUESTIONS.md` — Open questions and decisions
|
||||||
- `docs/progress/03-TEST-RUNS.md` — Test run log (canonical "what ran")
|
- `doc/progress/03-TEST-RUNS.md` — Test run log (canonical "what ran")
|
||||||
- `docs/progress/04-PARITY-MATRIX.md` — iOS/Android parity tracking
|
- `doc/progress/04-PARITY-MATRIX.md` — iOS/Android parity tracking
|
||||||
- `docs/progress/05-CHATGPT-FEEDBACK-PACKAGE.md` — AI collaboration package
|
- `doc/progress/05-CHATGPT-FEEDBACK-PACKAGE.md` — AI collaboration package
|
||||||
- Update "Last Updated" to 2025-12-22
|
- Update "Last Updated" to 2025-12-22
|
||||||
- Add "Baseline Tag" reference: `v1.0.11-p0-p1.4-complete`
|
- Add "Baseline Tag" reference: `v1.0.11-p0-p1.4-complete`
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 2. Progress Docs (`docs/progress/`)
|
### 2. Progress Docs (`doc/progress/`)
|
||||||
|
|
||||||
**Action:** Add drift guard headers to all progress docs
|
**Action:** Add drift guard headers to all progress docs
|
||||||
|
|
||||||
@@ -77,16 +77,16 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 3. Consolidation Artifacts (`docs/CONSOLIDATION_*.md`)
|
### 3. Consolidation Artifacts (`doc/CONSOLIDATION_*.md`)
|
||||||
|
|
||||||
**Action:** Archive with pointer
|
**Action:** Archive with pointer
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- `docs/CONSOLIDATION_COMPLETE.md` — Move to `docs/_archive/2025-12-16-consolidation/`
|
- `doc/CONSOLIDATION_COMPLETE.md` — Move to `doc/_archive/2025-12-16-consolidation/`
|
||||||
- `docs/CONSOLIDATION_SOURCE_MAP.md` — Move to `docs/_archive/2025-12-16-consolidation/`
|
- `doc/CONSOLIDATION_SOURCE_MAP.md` — Move to `doc/_archive/2025-12-16-consolidation/`
|
||||||
|
|
||||||
**Replacement:** Add note in `docs/00-INDEX.md` under "Archive Documentation":
|
**Replacement:** Add note in `doc/00-INDEX.md` under "Archive Documentation":
|
||||||
> Historical consolidation artifacts from 2025-12-16 are preserved in `docs/_archive/2025-12-16-consolidation/`. See `CONSOLIDATION_SOURCE_MAP.md` for complete file mapping.
|
> Historical consolidation artifacts from 2025-12-16 are preserved in `doc/_archive/2025-12-16-consolidation/`. See `CONSOLIDATION_SOURCE_MAP.md` for complete file mapping.
|
||||||
|
|
||||||
**Status:** Archive (preserve, don't delete)
|
**Status:** Archive (preserve, don't delete)
|
||||||
|
|
||||||
@@ -97,8 +97,8 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
#### 4.1 Testing Quick References
|
#### 4.1 Testing Quick References
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- `docs/testing/QUICK_REFERENCE.md` — Keep as canonical
|
- `doc/testing/QUICK_REFERENCE.md` — Keep as canonical
|
||||||
- `docs/testing/QUICK_REFERENCE_V2.md` — Archive or merge
|
- `doc/testing/QUICK_REFERENCE_V2.md` — Archive or merge
|
||||||
|
|
||||||
**Action:**
|
**Action:**
|
||||||
- If `QUICK_REFERENCE_V2.md` has unique content → Merge into `QUICK_REFERENCE.md`, then archive V2
|
- If `QUICK_REFERENCE_V2.md` has unique content → Merge into `QUICK_REFERENCE.md`, then archive V2
|
||||||
@@ -111,9 +111,9 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
#### 4.2 Integration Refactor Notes
|
#### 4.2 Integration Refactor Notes
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- `docs/integration/REFACTOR_NOTES.md` — Keep as canonical
|
- `doc/integration/REFACTOR_NOTES.md` — Keep as canonical
|
||||||
- `docs/integration/REFACTOR_NOTES_QUICK_START.md` — Check if duplicate
|
- `doc/integration/REFACTOR_NOTES_QUICK_START.md` — Check if duplicate
|
||||||
- `docs/integration/REFACTOR_ANALYSIS.md` — Check if duplicate
|
- `doc/integration/REFACTOR_ANALYSIS.md` — Check if duplicate
|
||||||
|
|
||||||
**Action:**
|
**Action:**
|
||||||
- Review for overlap
|
- Review for overlap
|
||||||
@@ -127,13 +127,13 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
#### 4.3 iOS Implementation Checklists
|
#### 4.3 iOS Implementation Checklists
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- `docs/platform/ios/IMPLEMENTATION_CHECKLIST.md` — Keep as canonical
|
- `doc/platform/ios/IMPLEMENTATION_CHECKLIST.md` — Keep as canonical
|
||||||
- `docs/platform/ios/IOS_IMPLEMENTATION_CHECKLIST.md` — Check if duplicate
|
- `doc/platform/ios/IOS_IMPLEMENTATION_CHECKLIST.md` — Check if duplicate
|
||||||
- `docs/platform/ios/IMPLEMENTATION_CHECKLIST_LEGACY.md` — Archive (already marked legacy)
|
- `doc/platform/ios/IMPLEMENTATION_CHECKLIST_LEGACY.md` — Archive (already marked legacy)
|
||||||
|
|
||||||
**Action:**
|
**Action:**
|
||||||
- If `IOS_IMPLEMENTATION_CHECKLIST.md` duplicates `IMPLEMENTATION_CHECKLIST.md` → Archive with pointer
|
- If `IOS_IMPLEMENTATION_CHECKLIST.md` duplicates `IMPLEMENTATION_CHECKLIST.md` → Archive with pointer
|
||||||
- `IMPLEMENTATION_CHECKLIST_LEGACY.md` → Move to `docs/_archive/2025-legacy-doc/`
|
- `IMPLEMENTATION_CHECKLIST_LEGACY.md` → Move to `doc/_archive/2025-legacy-doc/`
|
||||||
|
|
||||||
**Status:** Review and consolidate
|
**Status:** Review and consolidate
|
||||||
|
|
||||||
@@ -142,9 +142,9 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
#### 4.4 Deployment Docs
|
#### 4.4 Deployment Docs
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- `docs/deployment/deployment-guide.md` — Keep as canonical (if exists)
|
- `doc/deployment/deployment-guide.md` — Keep as canonical (if exists)
|
||||||
- `docs/deployment/DEPLOYMENT_CHECKLIST.md` — Keep (complementary)
|
- `doc/deployment/DEPLOYMENT_CHECKLIST.md` — Keep (complementary)
|
||||||
- `docs/progress/DEPLOYMENT_SUMMARY.md` — Keep (complementary)
|
- `doc/progress/DEPLOYMENT_SUMMARY.md` — Keep (complementary)
|
||||||
|
|
||||||
**Action:**
|
**Action:**
|
||||||
- If `deployment/deployment-guide.md` and `DEPLOYMENT_GUIDE.md` are duplicates → Keep one, archive other
|
- If `deployment/deployment-guide.md` and `DEPLOYMENT_GUIDE.md` are duplicates → Keep one, archive other
|
||||||
@@ -154,12 +154,12 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 5. AI Artifacts (`docs/ai/`)
|
### 5. AI Artifacts (`doc/ai/`)
|
||||||
|
|
||||||
**Action:** Add drift guard headers, clarify purpose
|
**Action:** Add drift guard headers, clarify purpose
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- All files in `docs/ai/` should have:
|
- All files in `doc/ai/` should have:
|
||||||
- **Purpose:** AI collaboration artifacts (not product documentation)
|
- **Purpose:** AI collaboration artifacts (not product documentation)
|
||||||
- **Status:** active|reference-only
|
- **Status:** active|reference-only
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 6. Platform Docs (`docs/platform/`)
|
### 6. Platform Docs (`doc/platform/`)
|
||||||
|
|
||||||
**Action:** Add drift guard headers, ensure no duplicates
|
**Action:** Add drift guard headers, ensure no duplicates
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 7. Testing Docs (`docs/testing/`)
|
### 7. Testing Docs (`doc/testing/`)
|
||||||
|
|
||||||
**Action:** Add drift guard headers, consolidate duplicates
|
**Action:** Add drift guard headers, consolidate duplicates
|
||||||
|
|
||||||
@@ -185,11 +185,11 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
### 8. Archive Structure
|
### 8. Archive Structure
|
||||||
|
|
||||||
**Current:** `docs/archive/2025-legacy-doc/`
|
**Current:** `doc/archive/2025-legacy-doc/`
|
||||||
|
|
||||||
**Action:** Create new archive for P1.5:
|
**Action:** Create new archive for P1.5:
|
||||||
- `docs/_archive/2025-12-16-consolidation/` — Consolidation artifacts
|
- `doc/_archive/2025-12-16-consolidation/` — Consolidation artifacts
|
||||||
- Keep `docs/archive/2025-legacy-doc/` as-is (historical)
|
- Keep `doc/archive/2025-legacy-doc/` as-is (historical)
|
||||||
|
|
||||||
**Status:** Create new archive directory
|
**Status:** Create new archive directory
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
### Step 1: Update Index (High Priority)
|
### Step 1: Update Index (High Priority)
|
||||||
|
|
||||||
1. Update `docs/00-INDEX.md`:
|
1. Update `doc/00-INDEX.md`:
|
||||||
- Add "Policy & Contracts" section
|
- Add "Policy & Contracts" section
|
||||||
- Add "Progress Tracking (Authoritative)" section
|
- Add "Progress Tracking (Authoritative)" section
|
||||||
- Update Last Updated to 2025-12-22
|
- Update Last Updated to 2025-12-22
|
||||||
@@ -211,7 +211,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
### Step 2: Add Drift Guards (High Priority)
|
### Step 2: Add Drift Guards (High Priority)
|
||||||
|
|
||||||
1. Add standard headers to all `docs/progress/*.md` files
|
1. Add standard headers to all `doc/progress/*.md` files
|
||||||
2. Add standard headers to key platform/testing docs
|
2. Add standard headers to key platform/testing docs
|
||||||
|
|
||||||
**Exit Criteria:** All progress docs have Purpose/Owner/Last Updated/Status
|
**Exit Criteria:** All progress docs have Purpose/Owner/Last Updated/Status
|
||||||
@@ -220,7 +220,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
### Step 3: Archive Consolidation Artifacts (Medium Priority)
|
### Step 3: Archive Consolidation Artifacts (Medium Priority)
|
||||||
|
|
||||||
1. Create `docs/_archive/2025-12-16-consolidation/`
|
1. Create `doc/_archive/2025-12-16-consolidation/`
|
||||||
2. Move `CONSOLIDATION_COMPLETE.md` and `CONSOLIDATION_SOURCE_MAP.md`
|
2. Move `CONSOLIDATION_COMPLETE.md` and `CONSOLIDATION_SOURCE_MAP.md`
|
||||||
3. Add pointer in index
|
3. Add pointer in index
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
### Step 5: Document Contracts Explicitly (Low Priority)
|
### Step 5: Document Contracts Explicitly (Low Priority)
|
||||||
|
|
||||||
1. Ensure `ci/README.md` clearly states: "This is policy-as-code"
|
1. Ensure `ci/README.md` clearly states: "This is policy-as-code"
|
||||||
2. Add note in `docs/00-INDEX.md` that `./ci/run.sh` is the CI contract
|
2. Add note in `doc/00-INDEX.md` that `./ci/run.sh` is the CI contract
|
||||||
|
|
||||||
**Exit Criteria:** Contracts are clearly documented as policy
|
**Exit Criteria:** Contracts are clearly documented as policy
|
||||||
|
|
||||||
@@ -250,7 +250,7 @@ Create a **single authoritative documentation index** that clearly separates:
|
|||||||
|
|
||||||
## Success Criteria
|
## Success Criteria
|
||||||
|
|
||||||
- [ ] `docs/00-INDEX.md` elevates contracts and progress docs
|
- [ ] `doc/00-INDEX.md` elevates contracts and progress docs
|
||||||
- [ ] All progress docs have drift guard headers
|
- [ ] All progress docs have drift guard headers
|
||||||
- [ ] Consolidation artifacts archived with pointers
|
- [ ] Consolidation artifacts archived with pointers
|
||||||
- [ ] Duplicate docs consolidated (merged or archived with pointers)
|
- [ ] Duplicate docs consolidated (merged or archived with pointers)
|
||||||
@@ -18,8 +18,8 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
|
|
||||||
### Files to Review
|
### Files to Review
|
||||||
|
|
||||||
- `docs/testing/QUICK_REFERENCE.md` — Current canonical
|
- `doc/testing/QUICK_REFERENCE.md` — Current canonical
|
||||||
- `docs/testing/QUICK_REFERENCE_V2.md` — Potential duplicate
|
- `doc/testing/QUICK_REFERENCE_V2.md` — Potential duplicate
|
||||||
|
|
||||||
### Decision Process
|
### Decision Process
|
||||||
|
|
||||||
@@ -31,12 +31,12 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
- [ ] Review both files side-by-side
|
- [ ] Review both files side-by-side
|
||||||
- [ ] Decide: merge or archive
|
- [ ] Decide: merge or archive
|
||||||
- [ ] If merge: Update `QUICK_REFERENCE.md` with V2 content, archive V2
|
- [ ] If merge: Update `QUICK_REFERENCE.md` with V2 content, archive V2
|
||||||
- [ ] If archive: Move V2 to `docs/_archive/2025-12-16-consolidation/`, add pointer in `QUICK_REFERENCE.md`
|
- [ ] If archive: Move V2 to `doc/_archive/2025-12-16-consolidation/`, add pointer in `QUICK_REFERENCE.md`
|
||||||
- [ ] Update `docs/00-INDEX.md` (remove V2 from active list if archived)
|
- [ ] Update `doc/00-INDEX.md` (remove V2 from active list if archived)
|
||||||
|
|
||||||
### Authoritative Doc
|
### Authoritative Doc
|
||||||
|
|
||||||
- `docs/testing/QUICK_REFERENCE.md` (keep as canonical)
|
- `doc/testing/QUICK_REFERENCE.md` (keep as canonical)
|
||||||
|
|
||||||
### Expected Outcome
|
### Expected Outcome
|
||||||
|
|
||||||
@@ -49,9 +49,9 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
|
|
||||||
### Files to Review
|
### Files to Review
|
||||||
|
|
||||||
- `docs/integration/REFACTOR_NOTES.md` — Current canonical
|
- `doc/integration/REFACTOR_NOTES.md` — Current canonical
|
||||||
- `docs/integration/REFACTOR_NOTES_QUICK_START.md` — Check if duplicate
|
- `doc/integration/REFACTOR_NOTES_QUICK_START.md` — Check if duplicate
|
||||||
- `docs/integration/REFACTOR_ANALYSIS.md` — Check if duplicate
|
- `doc/integration/REFACTOR_ANALYSIS.md` — Check if duplicate
|
||||||
|
|
||||||
### Decision Process
|
### Decision Process
|
||||||
|
|
||||||
@@ -65,11 +65,11 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
- [ ] Identify unique vs duplicate content
|
- [ ] Identify unique vs duplicate content
|
||||||
- [ ] If duplicates: Archive with pointer in `REFACTOR_NOTES.md`
|
- [ ] If duplicates: Archive with pointer in `REFACTOR_NOTES.md`
|
||||||
- [ ] If unique: Keep all, add cross-references between files
|
- [ ] If unique: Keep all, add cross-references between files
|
||||||
- [ ] Update `docs/00-INDEX.md` (remove archived files from active list)
|
- [ ] Update `doc/00-INDEX.md` (remove archived files from active list)
|
||||||
|
|
||||||
### Authoritative Doc
|
### Authoritative Doc
|
||||||
|
|
||||||
- `docs/integration/REFACTOR_NOTES.md` (keep as canonical)
|
- `doc/integration/REFACTOR_NOTES.md` (keep as canonical)
|
||||||
|
|
||||||
### Expected Outcome
|
### Expected Outcome
|
||||||
|
|
||||||
@@ -82,26 +82,26 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
|
|
||||||
### Files to Review
|
### Files to Review
|
||||||
|
|
||||||
- `docs/platform/ios/IMPLEMENTATION_CHECKLIST.md` — Current canonical
|
- `doc/platform/ios/IMPLEMENTATION_CHECKLIST.md` — Current canonical
|
||||||
- `docs/platform/ios/IOS_IMPLEMENTATION_CHECKLIST.md` — Check if duplicate
|
- `doc/platform/ios/IOS_IMPLEMENTATION_CHECKLIST.md` — Check if duplicate
|
||||||
- `docs/platform/ios/IMPLEMENTATION_CHECKLIST_LEGACY.md` — Already marked legacy
|
- `doc/platform/ios/IMPLEMENTATION_CHECKLIST_LEGACY.md` — Already marked legacy
|
||||||
|
|
||||||
### Decision Process
|
### Decision Process
|
||||||
|
|
||||||
1. **Compare content:**
|
1. **Compare content:**
|
||||||
- If `IOS_IMPLEMENTATION_CHECKLIST.md` duplicates `IMPLEMENTATION_CHECKLIST.md` → Archive with pointer
|
- If `IOS_IMPLEMENTATION_CHECKLIST.md` duplicates `IMPLEMENTATION_CHECKLIST.md` → Archive with pointer
|
||||||
- If `IOS_IMPLEMENTATION_CHECKLIST.md` has unique content → Merge into `IMPLEMENTATION_CHECKLIST.md`, then archive
|
- If `IOS_IMPLEMENTATION_CHECKLIST.md` has unique content → Merge into `IMPLEMENTATION_CHECKLIST.md`, then archive
|
||||||
- `IMPLEMENTATION_CHECKLIST_LEGACY.md` → Move to `docs/_archive/2025-legacy-doc/` (already marked legacy)
|
- `IMPLEMENTATION_CHECKLIST_LEGACY.md` → Move to `doc/_archive/2025-legacy-doc/` (already marked legacy)
|
||||||
|
|
||||||
2. **Action:**
|
2. **Action:**
|
||||||
- [ ] Review `IOS_IMPLEMENTATION_CHECKLIST.md` vs `IMPLEMENTATION_CHECKLIST.md`
|
- [ ] Review `IOS_IMPLEMENTATION_CHECKLIST.md` vs `IMPLEMENTATION_CHECKLIST.md`
|
||||||
- [ ] Decide: merge or archive
|
- [ ] Decide: merge or archive
|
||||||
- [ ] Move `IMPLEMENTATION_CHECKLIST_LEGACY.md` to `docs/_archive/2025-legacy-doc/`
|
- [ ] Move `IMPLEMENTATION_CHECKLIST_LEGACY.md` to `doc/_archive/2025-legacy-doc/`
|
||||||
- [ ] Update `docs/00-INDEX.md` (remove archived files from active list)
|
- [ ] Update `doc/00-INDEX.md` (remove archived files from active list)
|
||||||
|
|
||||||
### Authoritative Doc
|
### Authoritative Doc
|
||||||
|
|
||||||
- `docs/platform/ios/IMPLEMENTATION_CHECKLIST.md` (keep as canonical)
|
- `doc/platform/ios/IMPLEMENTATION_CHECKLIST.md` (keep as canonical)
|
||||||
|
|
||||||
### Expected Outcome
|
### Expected Outcome
|
||||||
|
|
||||||
@@ -114,9 +114,9 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
|
|
||||||
### Files to Review
|
### Files to Review
|
||||||
|
|
||||||
- `docs/deployment/deployment-guide.md` — Check if exists
|
- `doc/deployment/deployment-guide.md` — Check if exists
|
||||||
- `docs/deployment/DEPLOYMENT_CHECKLIST.md` — Keep (complementary)
|
- `doc/deployment/DEPLOYMENT_CHECKLIST.md` — Keep (complementary)
|
||||||
- `docs/progress/DEPLOYMENT_SUMMARY.md` — Keep (complementary)
|
- `doc/progress/DEPLOYMENT_SUMMARY.md` — Keep (complementary)
|
||||||
|
|
||||||
### Decision Process
|
### Decision Process
|
||||||
|
|
||||||
@@ -134,13 +134,13 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
- [ ] If both exist: Compare content, decide merge or keep both
|
- [ ] If both exist: Compare content, decide merge or keep both
|
||||||
- [ ] If merge: Archive duplicate with pointer
|
- [ ] If merge: Archive duplicate with pointer
|
||||||
- [ ] Ensure all deployment docs are cross-referenced
|
- [ ] Ensure all deployment docs are cross-referenced
|
||||||
- [ ] Update `docs/00-INDEX.md` (remove archived files from active list)
|
- [ ] Update `doc/00-INDEX.md` (remove archived files from active list)
|
||||||
|
|
||||||
### Authoritative Doc
|
### Authoritative Doc
|
||||||
|
|
||||||
- `docs/deployment/deployment-guide.md` (primary)
|
- `doc/deployment/deployment-guide.md` (primary)
|
||||||
- `docs/deployment/DEPLOYMENT_CHECKLIST.md` (complementary)
|
- `doc/deployment/DEPLOYMENT_CHECKLIST.md` (complementary)
|
||||||
- `docs/DEPLOYMENT_SUMMARY.md` (complementary)
|
- `doc/DEPLOYMENT_SUMMARY.md` (complementary)
|
||||||
|
|
||||||
### Expected Outcome
|
### Expected Outcome
|
||||||
|
|
||||||
@@ -162,8 +162,8 @@ Review and consolidate duplicate/superseded documentation with explicit "keep /
|
|||||||
|
|
||||||
- [ ] All archived files moved to appropriate archive directories
|
- [ ] All archived files moved to appropriate archive directories
|
||||||
- [ ] All pointers added to authoritative docs
|
- [ ] All pointers added to authoritative docs
|
||||||
- [ ] `docs/00-INDEX.md` updated (archived files removed from active list)
|
- [ ] `doc/00-INDEX.md` updated (archived files removed from active list)
|
||||||
- [ ] `docs/progress/01-CHANGELOG-WORK.md` updated with consolidation summary
|
- [ ] `doc/progress/01-CHANGELOG-WORK.md` updated with consolidation summary
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
- [ ] Add cross-reference in both files:
|
- [ ] Add cross-reference in both files:
|
||||||
- In `QUICK_REFERENCE.md`: "For P0 production-grade features testing, see [QUICK_REFERENCE_V2.md](./QUICK_REFERENCE_V2.md)"
|
- In `QUICK_REFERENCE.md`: "For P0 production-grade features testing, see [QUICK_REFERENCE_V2.md](./QUICK_REFERENCE_V2.md)"
|
||||||
- In `QUICK_REFERENCE_V2.md`: "For general testing commands, see [QUICK_REFERENCE.md](./QUICK_REFERENCE.md)"
|
- In `QUICK_REFERENCE_V2.md`: "For general testing commands, see [QUICK_REFERENCE.md](./QUICK_REFERENCE.md)"
|
||||||
- [ ] Update `docs/00-INDEX.md` to list both (already lists both)
|
- [ ] Update `doc/00-INDEX.md` to list both (already lists both)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
- `REFACTOR_NOTES.md`: "See [REFACTOR_ANALYSIS.md](./REFACTOR_ANALYSIS.md) for architectural analysis and [REFACTOR_NOTES_QUICK_START.md](./REFACTOR_NOTES_QUICK_START.md) for quick start"
|
- `REFACTOR_NOTES.md`: "See [REFACTOR_ANALYSIS.md](./REFACTOR_ANALYSIS.md) for architectural analysis and [REFACTOR_NOTES_QUICK_START.md](./REFACTOR_NOTES_QUICK_START.md) for quick start"
|
||||||
- `REFACTOR_NOTES_QUICK_START.md`: "See [REFACTOR_ANALYSIS.md](./REFACTOR_ANALYSIS.md) for complete analysis and [REFACTOR_NOTES.md](./REFACTOR_NOTES.md) for implementation context"
|
- `REFACTOR_NOTES_QUICK_START.md`: "See [REFACTOR_ANALYSIS.md](./REFACTOR_ANALYSIS.md) for complete analysis and [REFACTOR_NOTES.md](./REFACTOR_NOTES.md) for implementation context"
|
||||||
- `REFACTOR_ANALYSIS.md`: "See [REFACTOR_NOTES.md](./REFACTOR_NOTES.md) for implementation context and [REFACTOR_NOTES_QUICK_START.md](./REFACTOR_NOTES_QUICK_START.md) for quick start"
|
- `REFACTOR_ANALYSIS.md`: "See [REFACTOR_NOTES.md](./REFACTOR_NOTES.md) for implementation context and [REFACTOR_NOTES_QUICK_START.md](./REFACTOR_NOTES_QUICK_START.md) for quick start"
|
||||||
- [ ] Update `docs/00-INDEX.md` to list all three (already lists all)
|
- [ ] Update `doc/00-INDEX.md` to list all three (already lists all)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -74,9 +74,9 @@
|
|||||||
|
|
||||||
### Action
|
### Action
|
||||||
|
|
||||||
- [ ] Move `IMPLEMENTATION_CHECKLIST_LEGACY.md` to `docs/_archive/2025-legacy-doc/`
|
- [ ] Move `IMPLEMENTATION_CHECKLIST_LEGACY.md` to `doc/_archive/2025-legacy-doc/`
|
||||||
- [ ] Add pointer in `IOS_IMPLEMENTATION_CHECKLIST.md`: "For historical Phase 1 checklist, see [IMPLEMENTATION_CHECKLIST_LEGACY.md](../../_archive/2025-legacy-doc/IMPLEMENTATION_CHECKLIST_LEGACY.md)"
|
- [ ] Add pointer in `IOS_IMPLEMENTATION_CHECKLIST.md`: "For historical Phase 1 checklist, see [IMPLEMENTATION_CHECKLIST_LEGACY.md](../../_archive/2025-legacy-doc/IMPLEMENTATION_CHECKLIST_LEGACY.md)"
|
||||||
- [ ] Update `docs/00-INDEX.md` (remove LEGACY from active list, add to archive section)
|
- [ ] Update `doc/00-INDEX.md` (remove LEGACY from active list, add to archive section)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
- In `deployment/deployment-guide.md`: "See [DEPLOYMENT_CHECKLIST.md](./DEPLOYMENT_CHECKLIST.md) for checklist and [DEPLOYMENT_SUMMARY.md](../progress/DEPLOYMENT_SUMMARY.md) for summary"
|
- In `deployment/deployment-guide.md`: "See [DEPLOYMENT_CHECKLIST.md](./DEPLOYMENT_CHECKLIST.md) for checklist and [DEPLOYMENT_SUMMARY.md](../progress/DEPLOYMENT_SUMMARY.md) for summary"
|
||||||
- In `deployment/DEPLOYMENT_CHECKLIST.md`: "See [deployment-guide.md](./deployment-guide.md) for complete guide"
|
- In `deployment/DEPLOYMENT_CHECKLIST.md`: "See [deployment-guide.md](./deployment-guide.md) for complete guide"
|
||||||
- In `progress/DEPLOYMENT_SUMMARY.md`: "See [deployment-guide.md](../deployment/deployment-guide.md) for complete guide"
|
- In `progress/DEPLOYMENT_SUMMARY.md`: "See [deployment-guide.md](../deployment/deployment-guide.md) for complete guide"
|
||||||
- [ ] Update `docs/00-INDEX.md` to list all three (already lists all)
|
- [ ] Update `doc/00-INDEX.md` to list all three (already lists all)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -112,13 +112,13 @@
|
|||||||
|
|
||||||
### Files to Archive
|
### Files to Archive
|
||||||
|
|
||||||
1. `docs/platform/ios/IMPLEMENTATION_CHECKLIST_LEGACY.md` → `docs/_archive/2025-legacy-doc/`
|
1. `doc/platform/ios/IMPLEMENTATION_CHECKLIST_LEGACY.md` → `doc/_archive/2025-legacy-doc/`
|
||||||
|
|
||||||
### Files to Keep (with cross-references)
|
### Files to Keep (with cross-references)
|
||||||
|
|
||||||
1. `docs/testing/QUICK_REFERENCE.md` + `QUICK_REFERENCE_V2.md` (add cross-refs)
|
1. `doc/testing/QUICK_REFERENCE.md` + `QUICK_REFERENCE_V2.md` (add cross-refs)
|
||||||
2. `docs/integration/REFACTOR_NOTES.md` + `REFACTOR_NOTES_QUICK_START.md` + `REFACTOR_ANALYSIS.md` (add cross-refs)
|
2. `doc/integration/REFACTOR_NOTES.md` + `REFACTOR_NOTES_QUICK_START.md` + `REFACTOR_ANALYSIS.md` (add cross-refs)
|
||||||
3. `docs/deployment/deployment-guide.md` + `deployment/DEPLOYMENT_CHECKLIST.md` + `progress/DEPLOYMENT_SUMMARY.md` (add cross-refs)
|
3. `doc/deployment/deployment-guide.md` + `deployment/DEPLOYMENT_CHECKLIST.md` + `progress/DEPLOYMENT_SUMMARY.md` (add cross-refs)
|
||||||
|
|
||||||
### Index Updates
|
### Index Updates
|
||||||
|
|
||||||
@@ -134,8 +134,8 @@
|
|||||||
- [ ] Add cross-references to testing quick references
|
- [ ] Add cross-references to testing quick references
|
||||||
- [ ] Add cross-references to integration refactor notes
|
- [ ] Add cross-references to integration refactor notes
|
||||||
- [ ] Add cross-references to deployment docs
|
- [ ] Add cross-references to deployment docs
|
||||||
- [ ] Update `docs/00-INDEX.md` (archive section)
|
- [ ] Update `doc/00-INDEX.md` (archive section)
|
||||||
- [ ] Update `docs/progress/01-CHANGELOG-WORK.md` with consolidation summary
|
- [ ] Update `doc/progress/01-CHANGELOG-WORK.md` with consolidation summary
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ After cleanup, we now have a clean, organized set of files with no redundancy or
|
|||||||
- **Purpose**: Stale data UX handling example
|
- **Purpose**: Stale data UX handling example
|
||||||
- **Use Case**: Understanding fallback content and user experience
|
- **Use Case**: Understanding fallback content and user experience
|
||||||
|
|
||||||
## Documentation Directory (`docs/`)
|
## Documentation Directory (`doc/`)
|
||||||
|
|
||||||
### Integration Guides
|
### Integration Guides
|
||||||
|
|
||||||
@@ -248,12 +248,12 @@ await DailyNotification.scheduleDailyReminder({
|
|||||||
|
|
||||||
- Read the [API Reference](./API.md) for complete method documentation
|
- Read the [API Reference](./API.md) for complete method documentation
|
||||||
- Check [README.md](./README.md) for advanced usage examples
|
- Check [README.md](./README.md) for advanced usage examples
|
||||||
- Review [docs/notification-testing-procedures.md](./docs/notification-testing-procedures.md) for testing guidance
|
- Review [doc/testing/NOTIFICATION_PROCEDURES.md](./testing/NOTIFICATION_PROCEDURES.md) for testing guidance
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
For issues or questions:
|
For issues or questions:
|
||||||
- Check the troubleshooting section above
|
- Check the troubleshooting section above
|
||||||
- Review the [API documentation](./API.md)
|
- Review the [API documentation](./API.md)
|
||||||
- Check [docs/notification-testing-procedures.md](./docs/notification-testing-procedures.md) for debugging steps
|
- Check [doc/testing/NOTIFICATION_PROCEDURES.md](./testing/NOTIFICATION_PROCEDURES.md) for debugging steps
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user