···906906 answer := strings.TrimSpace(strings.ToLower(scanner.Text()))
907907 if answer != "" && answer != "y" && answer != "yes" {
908908 fmt.Printf(" Skipped\n")
909909+ // Still update the remote reference so next provision sees an accurate diff
910910+ if err := writeRemoteCloudInit(ip, localScript); err != nil {
911911+ fmt.Printf(" WARNING: could not update remote cloud-init reference: %v\n", err)
912912+ }
909913 return nil
910914 }
911915···918922 }
919923920924 fmt.Printf(" %s: cloud-init complete\n", name)
925925+926926+ // Write the script to the remote path so next provision can detect real diffs
927927+ if err := writeRemoteCloudInit(ip, localScript); err != nil {
928928+ fmt.Printf(" WARNING: could not update remote cloud-init reference: %v\n", err)
929929+ }
921930 return nil
922931}
932932+933933+// writeRemoteCloudInit writes the local cloud-init script to the remote server
934934+// so that subsequent provision runs can accurately detect real changes.
935935+func writeRemoteCloudInit(ip, script string) error {
936936+ cmd := fmt.Sprintf("cat > %s << 'CLOUDINITEOF'\n%sCLOUDINITEOF", cloudInitPath, script)
937937+ _, err := runSSH(ip, cmd, false)
938938+ return err
939939+}
+5-5
docs/appview.md
···57575858```bash
5959# Clone repository
6060-git clone https://tangled.org/@evan.jarrett.net/at-container-registry
6060+git clone https://tangled.org/evan.jarrett.net/at-container-registry
6161cd atcr
62626363# Copy and configure environment
···274274- Log rotation
275275- Monitoring
276276277277-See **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide.
277277+See **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide.
278278279279### Quick Production Checklist
280280···293293294294## Configuration Files Reference
295295296296-- **[.env.appview.example](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/.env.appview.example)** - All available environment variables with documentation
297297-- **[deploy/.env.prod.template](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template
298298-- **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide
296296+- **[.env.appview.example](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/.env.appview.example)** - All available environment variables with documentation
297297+- **[deploy/.env.prod.template](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template
298298+- **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide
299299- **[Hold Service Documentation](https://atcr.io/r/evan.jarrett.net/atcr-hold)** - Storage backend setup
+6-6
docs/hold.md
···62626363```bash
6464# Clone repository
6565-git clone https://tangled.org/@evan.jarrett.net/at-container-registry
6565+git clone https://tangled.org/evan.jarrett.net/at-container-registry
6666cd atcr
67676868# Copy and configure environment
···355355- Systemd service files
356356- Monitoring
357357358358-See **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide.
358358+See **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide.
359359360360### Quick Production Checklist
361361···375375376376## Configuration Files Reference
377377378378-- **[.env.hold.example](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/.env.hold.example)** - All available environment variables with documentation
379379-- **[deploy/.env.prod.template](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template (includes both AppView and Hold)
380380-- **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide
378378+- **[.env.hold.example](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/.env.hold.example)** - All available environment variables with documentation
379379+- **[deploy/.env.prod.template](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template (includes both AppView and Hold)
380380+- **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide
381381- **[AppView Documentation](https://atcr.io/r/evan.jarrett.net/atcr-appview)** - Registry API server setup
382382-- **[BYOS Architecture](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/docs/BYOS.md)** - Bring Your Own Storage technical design
382382+- **[BYOS Architecture](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/docs/BYOS.md)** - Bring Your Own Storage technical design
···10101111# Fallback configuration (used if API is unavailable)
1212$FallbackVersion = "v0.0.1"
1313-$FallbackTangledRepo = "https://tangled.org/@evan.jarrett.net/at-container-registry"
1313+$FallbackTangledRepo = "https://tangled.org/evan.jarrett.net/at-container-registry"
14141515Write-Host "ATCR Credential Helper Installer for Windows" -ForegroundColor Green
1616Write-Host ""
+1-1
pkg/appview/public/static/install.sh
···17171818# Fallback configuration (used if API is unavailable)
1919FALLBACK_VERSION="v0.0.1"
2020-FALLBACK_TANGLED_REPO="https://tangled.org/@evan.jarrett.net/at-container-registry"
2020+FALLBACK_TANGLED_REPO="https://tangled.org/evan.jarrett.net/at-container-registry"
21212222# Detect OS and architecture
2323detect_platform() {
+1-1
pkg/appview/templates/pages/install.html
···121121 </div>
122122123123 <h3 class="text-lg font-medium mb-3">Still having issues?</h3>
124124- <p>Check the <a href="https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/INSTALLATION.md" class="link link-primary">full documentation</a> or <a href="https://tangled.org/@evan.jarrett.net/at-container-registry/issues" class="link link-primary">open an issue</a>.</p>
124124+ <p>Check the <a href="https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/INSTALLATION.md" class="link link-primary">full documentation</a> or <a href="https://tangled.org/evan.jarrett.net/at-container-registry/issues" class="link link-primary">open an issue</a>.</p>
125125 </section>
126126127127 <section>