UniFi UNAS-Pro Snapshot Issues

UniFi UNAS-Pro Snapshot Issues#

The August 2, 2026 emergency pool migration copied nine shared drives into ordinary directories instead of Btrfs subvolumes. File access worked, but snapshots and quota operations failed. The repair is to replace each affected share root with a Btrfs subvolume and ensure its separate snapshot destination exists. GoogleCloudSync, Documents, Immich, Books, HomesDSM, Musique, Nadine, and Software were repaired on October 10, 2026. Photos was repaired on October 11, 2026.

DashApps.app Migration

DashApps.app Migration#

Create one Obsidian vault and one Hugo website for all apps. Start with a new DashApps landing page and copies of the GenDash and GPSDash content. Keep both existing websites live throughout the transition.

This is a plan; unchecked tasks have not been completed or verified. Proposed names and paths below can be adjusted before implementation.

1. Confirm the destination and record the starting point#

  • 1.1 Confirm the main domain: dashapps.app.
  • 1.2 Confirm the existing GenDash domain: gendash.app.
  • 1.3 Record the current GenDash and GPSDash setup from the actual systems; the September GPSDash scaffold note may no longer describe everything.
    • 1.3.1 Record each local vault path, current branch, and working-tree status.
    • 1.3.2 Record each vault’s GitHub repository, visibility, and default branch.
    • 1.3.3 Record each HP1Docker site folder and whether it is a Git checkout; record its remote if present.
    • 1.3.4 For each Cloudflare Pages project, record the project name, connected GitHub repository, production branch, build command, and output folder.
    • 1.3.5 For each app, verify the custom domain attached to its Pages project and record the public URL. Record any additional hostname or redirect configuration that affects the site.
    • 1.3.6 Record GenDash’s publishing scripts and schedules on the Mac and HP1Docker, including the times and host timezone.
    • 1.3.7 Record GPSDash’s publishing scripts and schedules on the Mac and HP1Docker; explicitly record when no scheduled job exists.

1.3 Starting-point inventory (checked 2026-10-08)#

Verified from the current local checkouts, publishing scripts, GitHub repository search, and read-only checks on HP1Docker (10.1.2.202):

GenDash Folder Migration

GenDash Folder Migration#

1. Preparation & Freeze#

  • 1.1 Create the new project folder at /Users/marc/Xcode/GenDash.
  • 1.2 Confirm the destination folder is empty before copying the project.
  • 1.3 Close Xcode and any other application that may be watching or editing the project.
  • 1.4 Confirm there are no unsaved changes in source files, localization worksheets, or documentation.
  • 1.5 Record the current Git branch and working-tree status.
  • 1.6 Resolve or document the current Git file-watcher warning before relying on the status check.

2. Copy the Project#

2.1 Complete Copy#

  • 2.1.1 Make a complete filesystem copy of the project into /Users/marc/Xcode/GenDash.
  • 2.1.2 Preserve the .git directory, hidden files, package directories, symlinks, file permissions, and localization bundles.
  • 2.1.3 Preserve the Xcode project, workspace, app source, widget source, resources, entitlements, property lists, documentation, scripts, and localization files.
  • 2.1.4 Keep the original project folder unchanged as a rollback copy.

2.2 Copy Verification#

  • 2.2.1 Confirm the copied repository contains GenDash.xcodeproj and its workspace.
  • 2.2.2 Confirm the copied repository contains both the GenDash app target and GenDashWidget extension target.
  • 2.2.3 Confirm the copied repository contains the GenDash Localizations, Images, Appliances, Generators, Manuals, and scratch folders.
  • 2.2.4 Confirm the copied repository contains AGENTS.md, .agents, MISSION.md, .gitignore, and the string catalogs.
  • 2.2.5 Confirm the copied .git directory identifies the same repository, branch, and remote configuration.
  • 2.2.6 Confirm the original project remains unchanged after the copy.

3. Xcode Relocation Validation#

3.1 Project References#

  • 3.1.1 Open the copied GenDash.xcodeproj from /Users/marc/Xcode/GenDash.
  • 3.1.2 Confirm the project navigator contains no red or missing file references.
  • 3.1.3 Confirm the workspace opens normally and uses the copied project.
  • 3.1.4 Confirm the shared GenDash and GenDashWidget schemes are available.
  • 3.1.5 Confirm the Xcode project, workspace, and schemes contain no stale absolute references to the old folder.

3.2 Build, Signing & Runtime#

  • 3.2.1 Confirm the main app target retains its original bundle identifier, signing team, entitlements, and property list settings.
  • 3.2.2 Confirm the widget target retains its original bundle identifier, signing team, entitlements, and property list settings.
  • 3.2.3 Build the main GenDash target from the new location.
  • 3.2.4 Build the GenDashWidget target from the new location.
  • 3.2.5 Run the app and confirm the widget and Live Activity integration still function.
  • 3.2.6 Confirm moving the source folder has not changed device or simulator app data, Keychain behavior, or CloudKit configuration.
  • 3.2.7 Do not export or import localizations as part of the folder move.

4. Project-Internal Absolute Path Audit#

4.1 Path Audit#

  • 4.1.1 Search the copied project for references to the old project location.
  • 4.1.2 Separate Xcode configuration references from scripts and historical recovery files.
  • 4.1.3 Confirm the Xcode project, workspace, schemes, entitlements, and property lists are path-independent.
  • 4.1.4 Confirm every approved operational script now locates the repository from its own location or the new project path.
  • 4.1.5 Test each retained project script from /Users/marc/Xcode/GenDash.
  • 4.1.6 Repeat the audit until no required project workflow depends on the old project location.

5. External Scripts, Aliases & Launchers Audit#

5.1 Inventory#

  • 5.1.1 Identify the definition and location of the pushgen command.
  • 5.1.2 Check shell aliases, shell functions, startup files, and PATH entries for references to the old Antigravity folder.
  • 5.1.3 Check symlinks, launch scripts, Automator actions, Shortcuts, LaunchAgents, scheduled jobs, and other local launchers that may invoke GenDash tools.
  • 5.1.4 Inventory repository scripts that use absolute paths or assume the old project location.
  • 5.1.5 Classify each script or launcher as active, required, optional, or historical.

5.2 Approved Changes & Validation#

  • 5.2.1 Update /Users/marc/Scripts/MacOS/lock_gendash.sh so its GenDash localization and string-catalog paths point to /Users/marc/Xcode/GenDash.
  • 5.2.2 Update /Users/marc/Xcode/GenDash/AGENTS.md so its localization workflow and locked-file paths point to the new project location.
  • 5.2.3 Update /Users/marc/Xcode/GenDash/.agents/skills/gendash-architecture/SKILL.md so its project file links point to the new project location.

6. Final Sign-Off#

6.1 Sign-Off#

  • 6.1.1 Verify the active file-locking aliases resolve to the updated script and no active external configuration still references the old project path.
  • 6.1.2 Record the changed files and the rollback method before marking the migration complete.
  • 6.1.3 Mark the migration complete only after the original folder is no longer needed as a rollback copy.
  • 6.1.4 Remove the original folder only as a separate, explicitly approved cleanup action.

7. MacBook Air Migration (Secondary Computer)#

7.1 Preflight#

  • 7.1.1 Confirm the MacBook Air’s current GenDash project location, Git branch, working-tree status, local-only commits, and remotes.
  • 7.1.2 Confirm the GenDash and Scripts migration commits are available on their remotes before pulling them to the MacBook Air.
  • 7.1.3 Confirm /Users/marc/Xcode/GenDash does not already contain a project and preserve the current Air folder as a rollback copy.

7.2 Repository Relocation#

  • 7.2.1 Choose the relocation method: move the complete existing checkout when local-only state exists; use a fresh clone when the checkout is clean and fully synchronized.
  • 7.2.2 Create the new folder and relocate or clone GenDash into /Users/marc/Xcode/GenDash, preserving .git when moving the existing checkout.
  • 7.2.3 Pull the latest GenDash changes in the new location.
  • 7.2.4 Verify the branch, history, remotes, tracked files, and working-tree status.

7.3 Xcode and Script Validation#

  • 7.3.1 Open the GenDash project or workspace from the new location and confirm both schemes and references are available.
  • 7.3.2 Build the main app and widget once from the new location.
  • 7.3.3 Pull or clone the /Users/marc/Scripts repository on the MacBook Air and confirm genl, genu, gens, and genx use the updated locking script.
  • 7.3.4 Confirm pushgen remains unchanged because it serves the separate Obsidian/Hugo workflow.
  • 7.3.5 Confirm no active workflow on the MacBook Air still depends on the old project path.

7.4 Sign-Off#

  • 7.4.1 Keep the original MacBook Air folder until the new setup has passed validation.
  • 7.4.2 Remove the original MacBook Air folder only as a separate, explicitly approved cleanup action.

UniFi UNAS-Pro Pool Migration Strategy

UniFi UNAS-Pro Pool Migration Strategy: Pool 1 (SSD) to Pool 2 (HDD)#

This document defines the operational plan, safety protocols, database update queries, and verification steps to migrate all shared folders from Storage Pool 1 (SSD - Degraded RAID5) to Storage Pool 2 (HDD - Healthy RAID5) on the master UniFi UNAS-Pro NAS (10.1.2.2) while preserving all access rights, Samba configurations, and TrueNAS backup operations.

The checked commands in this historical migration record now use the current identity HP6TrueNAS at 10.1.1.16; the node was formerly HP7TrueNAS at 10.1.1.17.