KB: skymirror

← All workspaces
4101 entries 163 domains 4.6 MB database Last ingest: 2026-03-20 02:00

4101 results — page 7 of 83

Title Domain Type Severity Source Freshness Updated
rclone connects to `localhost:{dynamic_port}` instead of direct host skymirror/transfer pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
rclone connects to `localhost:{dynamic_port}` instead of direct host
Tunnels reused via `ps aux` process check + `fsockopen` port verification general pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
Tunnels reused via `ps aux` process check + `fsockopen` port verification
`SftpService::resolveConnectionTarget()` transparently creates tunnel when in... general pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
`SftpService::resolveConnectionTarget()` transparently creates tunnel when internal host is set
Per-account `sftp_internal_host` = IP behind the proxy general pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
Per-account `sftp_internal_host` = IP behind the proxy
Global proxy config stored in `app_settings` (host, port, user, key_path) general pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
Global proxy config stored in `app_settings` (host, port, user, key_path)
2 migrations: `app_settings` table + `sftp_internal_host`/`sftp_internal_port... general pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
2 migrations: `app_settings` table + `sftp_internal_host`/`sftp_internal_port` columns
`app/Models/AppSetting.php` — Global key-value settings model general pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
`app/Models/AppSetting.php` — Global key-value settings model
`app/Services/Sftp/SshTunnelService.php` — Tunnel lifecycle management (port ... general pattern info HANDOFF-021-260226-sftp-tunnel-management.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-021-260226-sftp-tunnel-management.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
`app/Services/Sftp/SshTunnelService.php` — Tunnel lifecycle management (port range 22000-22999)
TransferStats DTO:: Added `lastError` field for error recovery from stats. skymirror/transfer pattern info HANDOFF-022-260226-sftp-file-transfer-fixes.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-022-260226-sftp-file-transfer-fixes.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**TransferStats DTO:** Added `lastError` field for error recovery from stats.
Retry limit:: Max 6 retries (~60s) before marking as `Failed` with "rclone jo... skymirror/transfer pattern info HANDOFF-022-260226-sftp-file-transfer-fixes.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-022-260226-sftp-file-transfer-fixes.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Retry limit:** Max 6 retries (~60s) before marking as `Failed` with "rclone job lost" message.
Stats fallback:: When `getJobStatus()` fails, check `core/stats` (which persi... skymirror/transfer pattern info HANDOFF-022-260226-sftp-file-transfer-fixes.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-022-260226-sftp-file-transfer-fixes.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Stats fallback:** When `getJobStatus()` fails, check `core/stats` (which persists longer). If stats show errors or transfers, determine final state from stats.
`Toolbar.vue`: Small green terminal icon in account dropdown for SFTP accounts general pattern info HANDOFF-022-260226-sftp-file-transfer-fixes.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-022-260226-sftp-file-transfer-fixes.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
`Toolbar.vue`: Small green terminal icon in account dropdown for SFTP accounts
`FilePanel.vue`: Green `>_ SFTP` badge in panel header when account has verif... general pattern info HANDOFF-022-260226-sftp-file-transfer-fixes.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-022-260226-sftp-file-transfer-fixes.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
`FilePanel.vue`: Green `>_ SFTP` badge in panel header when account has verified SFTP
`Account.ts`: Added `sftp_verified: boolean` to TypeScript interface general pattern info HANDOFF-022-260226-sftp-file-transfer-fixes.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-022-260226-sftp-file-transfer-fixes.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
`Account.ts`: Added `sftp_verified: boolean` to TypeScript interface
`FileManagerController.php`: Added `sftp_verified` boolean to account data (b... general pattern info HANDOFF-022-260226-sftp-file-transfer-fixes.md 100 2026-02-26
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-022-260226-sftp-file-transfer-fixes.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
`FileManagerController.php`: Added `sftp_verified` boolean to account data (based on `sftp_connection_verified_at`)
Sluttilstand skymirror/transfer pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
| Fil | Status | |-----|--------| | `app/Http/Controllers/FileBrowserController.php` | Committed: drive_not_found + source_is_empty | | `resources/js/helpers/api.js` | Committed: responseData on Error | | `resources/js/shared/api/routes.ts` | Committed: AccountRoutes.destroy | | `resources/js/vue/api/browse.ts` | Committed: DriveNotFoundError class | | `resources/js/vue/components/FilePanel.vue` | Committed: banner + cache bypass + files-refreshed | | `resources/js/vue/composables/useSyncComp...
Neste LLM-instruksjon skymirror/transfer pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
### Approved plan: Auto-verify + Settings modal + kebab cleanup **Plan file:** `/home/heine/.claude/plans/reactive-petting-yeti.md` **Summary:** 1. **Auto-verify**: In Alpine `accountCard.init()`, call `verify()` instead of `fetchStatus()`. Add `setInterval` for 5-minute periodic re-verify. 2. **Remove Verify** from kebab menu (both full and compact cards) — no longer needed. 3. **Add Settings** menu item → opens new per-account settings modal. 4. **New `_settings-modal.blade.php`**: Fields ...
Uncommitted Changes (NOT mine) general pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
3 PHP files have uncommitted changes from another session (SFTP/MP-0004 related): - `app/Http/Controllers/CloudAccountController.php` - `app/Services/Sftp/SftpConfigDTO.php` - `app/Services/Sftp/SftpService.php` **Do NOT commit these without reviewing.** ---
Feature 5 — Account card kebab menu (f9cf1c3, f326f52) skymirror/transfer pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**What:** Replaced scattered action buttons (verify, SFTP, delete) on full account cards with single ⋮ kebab dropdown menu. ### Menu items | Item | Icon | Condition | |------|------|-----------| | Verify | `fa-arrows-rotate` | All accounts | | SFTP | `fa-terminal` | Nextcloud only (not group folders), ON badge if enabled | | Remove account | `fa-trash-can` | All accounts (red, with confirm) | - Alpine.js `menuOpen` state added to `accountCard` component - `@click.outside="menuOpen = false"`...
Feature 4 — Empty-source compare optimization (2d14934) skymirror/transfer pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Problem:** When source panel showed 0 items, `compareDeep` still ran `listRecursiveParallel` (both sides) — slow. ### Fix - **Frontend** (`App.vue`): Sends `source_is_empty: true` hint when `sourceStore.flattenedEntries.length === 0` - **`useSyncComparison.ts`**: Forwards `source_is_empty` parameter to API - **Backend** (`FileBrowserController::compareDeep()`): If `source_is_empty=true`, sets `$srcRaw = []` and only calls `listRecursive()` on destination side ---
Feature 3 — Auto-rerun compare after refresh (3d76550) general pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Problem:** After ⟳ refresh, compare results stayed stale because `lastAutoCompareKey` was unchanged → compare skipped. ### Fix - `FilePanel.vue`: New `'files-refreshed'` event emitted after `skipCache=true` load succeeds - `App.vue`: `onPanelForceRefreshed()` resets `lastAutoCompareKey = ''` and calls `runCompare(true, true)` (force + silent) ---
Feature 2 — Toolbar refresh cache bypass (9fedc64) general pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Problem:** ⟳ button called `loadEntries()` without `skipCache=true`, so frontend IndexedDB cache (5-min TTL) was still served. ### Fix - Toolbar `@refresh` → `loadEntries(true)` (skipCache=true) - Context menu refresh → same - `loadEntries(true)` calls `invalidateAccount(accountId)` to nuke entire account's IndexedDB cache before fetching - Import `invalidateAccount` from `useCache.ts` composable ---
Feature 1 — Detect deleted shared drives (b8cdc86, 3a550ff) skymirror/transfer pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Problem:** Shared drive "Design" (0AFMafzlrdIUMUk9PVA) was deleted from Google but still appeared in File Manager, causing rclone 404 error. ### Architecture - **Backend** (`FileBrowserController::list()`): Detects `notFound` / `drive not found` in ExternalServiceException → returns HTTP 410 with `error_code: 'drive_not_found'` - **`api.js`**: Attaches `responseData` (parsed JSON) to thrown Error objects for structured error handling - **`browse.ts`**: `DriveNotFoundError` class thrown whe...
Commits (denne sesjonen) skymirror/transfer pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
| Hash | Type | Beskrivelse | |------|------|-------------| | `b8cdc86` | feat | Detect deleted shared drives → drive_not_found banner + remove button | | `3a550ff` | fix | Drive-not-found banner contrast (dark text on cream bg, solid red btn) | | `9fedc64` | fix | Toolbar ⟳ refresh bypasses frontend cache + invalidates account cache | | `3d76550` | feat | Auto-rerun compare after forced panel refresh (files-refreshed event) | | `2d14934` | perf | Skip source recursive listing when source pan...
Status general pattern info HANDOFF-020-260225-file-manager-dev21.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-020-260225-file-manager-dev21.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**IN PROGRESS** — Plan approved but not yet implemented for auto-verify + settings modal.
Neste LLM-instruksjon general pattern info HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
Ingen aktiv oppgave. Mulige kandidater: - MP-0004 SFTP Nextcloud er masterplannet og reviewet (grade A) — klar for implementering - Ytterligere UX-polish på File Manager
Sluttilstand skymirror/transfer pattern info HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
| Fil | Endring | |-----|---------| | `app/Jobs/IndexAccountJob.php` | Per-konto interval | | `app/Models/CloudAccount.php` | index_interval kolonne | | `database/migrations/..._add_index_interval_to_cloud_accounts.php` | Migration | | `routes/api.php` | Settings-endepunkter | | `resources/js/shared/api/routes.ts` | SettingsRoutes | | `resources/js/vue/stores/settingsStore.ts` | indexInterval + API-sync | | `resources/js/vue/components/modals/OptionsModal.vue` | Interval-dropdown | | `resourc...
Fix 4 — Dropdown hover manglet overalt (ac6da34) general incident medium HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Root cause:** `--color-surface-hover` og `--color-surface-active` var aldri definert i `app.css`. Alle komponenter brukte fallback (`rgba(128,128,128,0.12)`) som var usynlig. **Fix:** Lagt til i `:root` og `.dark` i `app.css`: - Lys: `rgba(0,0,0,0.06)` / `rgba(0,0,0,0.10)` - Mørk: `rgba(255,255,255,0.08)` / `rgba(255,255,255,0.14)` Fikser hover på: konto-dropdown, kebab-meny, context-meny, breadcrumbs, kolonneoverskrifter, filrader — **alle** komponenter som brukte variabelen. ---
Feature 3 — Golden synced badge (98ef038 → a1244d1) skymirror/transfer pattern info HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Trigger:** "Hvis 100% match fra source til destination, vil ha et golden badge" ### Logikk (`FilePanel.vue`) ```typescript const INCOMPLETE_STATUSES = new Set(['source_only', 'mismatch', 'partial_match', 'partial_match_elsewhere']); const isFullySynced = computed(() => { if (props.panelId !== 'source') return false; if (syncStatuses.value.size === 0) return false; for (const status of syncStatuses.value.values()) { if (INCOMPLETE_STATUSES.has(status)) return false; } return t...
Feature 2 — Delayed dest refresh + empty folder sync (9d5f4c1) skymirror/transfer pattern info HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: ["Transfer"]
Cross-domain: []
Symptoms: []
Body:
**Trigger:** Forhåndsliggende endringer fra bruker (ikke commitet da) - **App.vue:** `destRefreshTrigger++` 8 sekunder etter transfer for `emptySource`/`allExist` — gir metadata-cache tid til å oppdatere - **FilePanel.vue:** Empty folder som finnes på begge sider → `'match'` status via `otherDirNames` Set ---
Feature 1 — Konfigurerbar auto-reindeksering (a6260be) skymirror/scheduling pattern info HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**Trigger:** "Denne re-indekserer automatisk hvert 30. minutt, må kunne parameterstyres fra alternativer modalen" ### Arkitektur - **Migration:** `cloud_accounts.index_interval` (nullable uint) — per-konto intervall - **Model:** `CloudAccount` — `$fillable`, `$casts`, PHPDoc oppdatert - **Job:** `IndexAccountJob::handle()` — leser `$account->index_interval ?? config('rclone.index_interval')`. Verdi `0` = disabled (ingen reschedule) - **API:** `GET /api/settings/index-interval` + `PATCH /api/...
Commits (denne sesjonen) skymirror/transfer pattern info HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: ["Transfer"]
Cross-domain: []
Symptoms: []
Body:
| Hash | Type | Beskrivelse | |------|------|-------------| | `a6260be` | feat | Configurable auto-reindex interval from Options modal | | `9d5f4c1` | fix | Delayed dest refresh after transfer + empty folder sync match | | `98ef038` | feat | Golden synced badge when all source files are in destination | | `6a30464` | feat | Enhanced gold badge — shimmer + sparkle animations | | `8cc35ea` | fix | True gold colors (#FFD700), less orange | | `ac6da34` | fix | Define --color-surface-hover/active ...
Status general pattern info HANDOFF-019-260225-file-manager-dev20.md 100 2026-02-25
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-019-260225-file-manager-dev20.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
**DONE** — 4 features/fixes implementert, testet av bruker, commitet og pushet.
Files Modified general pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
``` nc-apps/prefetchboost/lib/Listener/LoadAdditionalListener.php nc-apps/prefetchboost/js/prefetcher.js nc-apps/prefetchboost/appinfo/info.xml ```
Next LLM Instruction general pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
1. Update expert files: prefetchboost v1.1, nextcloud-nativja v1.6 2. Load: `coordination/experts/05-operations/prefetchboost/EXPERT-prefetchboost-v1.0-20260227.md` 3. New gotchas to document: - NC32 Files uses `window.fetch` for PROPFIND, not axios/XHR - `passthrough: 0` is normal when pre-seed is active (no live PROPFIND to cache) - `IInitialStateService` (deprecated service) vs `IInitialState` (DI-scoped) distinction ---
Known Risks skymirror/transfer pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
- `IInitialStateService` deprecated in NC32 — if removed, switch to `IInitialState` (DI-scoped) - Only root `/` is pre-seeded; subfolder navigation still hits live WebDAV (passthrough cache handles cycle 2) - Very large root directories (1000+ files) may slow `getDirectoryListing()` marginally ---
Verification Result — CONFIRMED ✅ general pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
Browser DevTools Console (nc.nativja.no, session #7): ``` [PrefetchBoost] Pre-seeded PROPFIND cache: 20 items for admin [PrefetchBoost] fetch Cache HIT: PROPFIND /remote.php/dav/files/admin/ [PrefetchBoost] XHR Cache HIT (inflight-GET-recommendations): ... [PrefetchBoost] XHR Cache HIT (inflight-GET-user_status): ... [PrefetchBoost] XHR Cache HIT (GET-notifications): ... [PrefetchBoost] Stats: {"hits":4,"prefetched":5,"passthrough":0,"preSeeded":1} ``` **Key finding:** NC32 Files uses `wind...
Deploy Performed general pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
1. SCP to nativja via tunnel (port 22110) 2. `docker cp` to `nextcloud-aio-nextcloud:/var/www/html/custom_apps/` 3. `chown -R www-data:www-data` applied 4. `php occ upgrade` ran: "Updated prefetchboost to 0.4.0" confirmed 5. PHP-FPM OPcache reloaded via `kill -USR2 168` (master PID inside container) ---
Timing Impact (Expected) general pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
``` Before v0.4.0: 0.0s GET /apps/files/files 0.6s HTML received 2.5s JS parsed, Vue mounts 2.5s Vue sends PROPFIND → live network → ~211ms 2.7s Files rendered After v0.4.0: 0.0s GET /apps/files/files 0.6s HTML received (with initial-state-prefetchboost-fileList embedded) 0.6s prefetcher.js runs → pre-seeds PROPFIND cache instantly 2.5s JS parsed, Vue mounts 2.5s Vue sends PROPFIND → XHR CACHE HIT → 0ms 2.5s Files rendered (saved ~211ms) ``` ---
What Changed general pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
### nc-apps/prefetchboost/lib/Listener/LoadAdditionalListener.php Refactored from a zero-dependency no-op into a fully DI-wired listener: - Added constructor with `IUserSession`, `IRootFolder`, `IInitialStateService` - `injectFileList()` fetches `getUserFolder()->getDirectoryListing()` (1.3ms warm) - Builds JSON payload: `{ userId, root: {...}, files: [...] }` - Injects as `initial-state-prefetchboost-fileList` hidden input in HTML - Wrapped in `try/catch` — failure is non-fatal, Files app ...
Summary general pattern info HANDOFF-030-260227-prefetchboost-initialstate.md 100 2026-02-27
Source file: /var/www/skymirror/coordination/handoffs/HANDOFF-030-260227-prefetchboost-initialstate.md
Source date: None
Keywords: []
Cross-domain: []
Symptoms: []
Body:
Implemented Approach B for PrefetchBoost: server-side file list injection via `IInitialState`, enabling 0ms PROPFIND response for cycle 1 before Vue mounts. ---
Phase 3 (Agent Enhancement): Add native frontmatter fields to agent files + deduplicate shared co… skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0002-260225-skills-hooks-migration/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["phase","agent","enhancement","native","frontmatter","fields","files","deduplicate","shared","content"]
Cross-domain: []
Symptoms: []
Body:
nt
Phase 2 (Commands to Skills): Convert 30 commands to `.claude/skills/` format skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0002-260225-skills-hooks-migration/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["phase","commands","skills","convert","claude","format"]
Cross-domain: []
Symptoms: []
Body:
Phase 1 (Hooks): Add 2 new automation hooks -- zero risk, additive only skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0002-260225-skills-hooks-migration/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["phase","hooks","automation","zero","risk","additive"]
Cross-domain: []
Symptoms: []
Body:
**Three phases, designed for parallel Sonnet agent execution:** skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0002-260225-skills-hooks-migration/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["three","phases","designed","parallel","sonnet","agent","execution"]
Cross-domain: []
Symptoms: []
Body:
Migrate Skymirror's custom orchestration infrastructure to leverage Claude Code's native Skills,… skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0002-260225-skills-hooks-migration/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["migrate","skymirror","custom","orchestration","infrastructure","leverage","claude","code","native","skills"]
Cross-domain: []
Symptoms: []
Body:
ks, and Sub-agent frontmatter. This eliminates ~60% content duplication across 30 commands and 23 agents, automates cache invalidation and Vite builds via hooks, and adds real tool enforcement via native frontmatter fields.
Account card UI shows SFTP badge when configured + settings modal for SFTP config skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0004-260225-sftp-nextcloud/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["account","card","shows","sftp","badge","configured","settings","modal","config"]
Cross-domain: []
Symptoms: []
Body:
TransferController/MonitorTransferJob modified to choose SFTP vs WebDAV based on account config skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0004-260225-sftp-nextcloud/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["transfercontroller","monitortransferjob","modified","choose","sftp","webdav","based","account","config"]
Cross-domain: []
Symptoms: []
Body:
`occ files:scan` runs as a separate queued job after transfer completion skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0004-260225-sftp-nextcloud/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["files","scan","runs","separate","queued","after","transfer","completion","Transfer"]
Cross-domain: []
Symptoms: []
Body:
SSH key files stored at `/var/www/.config/skymirror/ssh-keys/` with 600 permissions skymirror lesson medium MASTERPLAN.md 97 2026-03-20T02:00:42Z
Source file: coordination/masterplans/active/MP-0004-260225-sftp-nextcloud/MASTERPLAN.md
Source date: 2026-02-25
Keywords: ["files","stored","config","skymirror","keys","permissions"]
Cross-domain: []
Symptoms: []
Body:
Ingestion History

Loading…