Update documentation for app info pages feature
- CONTEXT.md: session 5 with app detail/info pages + optional config - README.md: add optional-config API endpoint, update version to 0.2.11 - CLAUDE.md: add app info page patterns to key patterns section Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -171,6 +171,10 @@ manually via the dashboard "Sablonok frissítése" button.
|
|||||||
- Memory bar on deploy page uses two-segment stacked bar (committed = solid green, new = translucent green)
|
- Memory bar on deploy page uses two-segment stacked bar (committed = solid green, new = translucent green)
|
||||||
- Deploy flow shows 3-step progress panel (config → containers → health), polls `GET /api/stacks/{name}` every 3s until running/unhealthy/timeout(120s)
|
- Deploy flow shows 3-step progress panel (config → containers → health), polls `GET /api/stacks/{name}` every 3s until running/unhealthy/timeout(120s)
|
||||||
- Telepítés buttons have `checkBeforeDeploy()` onclick guard — fetches live state from API before navigating to deploy page
|
- Telepítés buttons have `checkBeforeDeploy()` onclick guard — fetches live state from API before navigating to deploy page
|
||||||
|
- App info pages at `/apps/{slug}` — detail view with use cases, setup guide, screenshots, optional config
|
||||||
|
- Optional config saves to `app.yaml` and restarts deployed apps via `docker compose up -d`
|
||||||
|
- `optional_config` fields in `.felhom.yml` define post-deploy configurable env vars (e.g., API keys)
|
||||||
|
- `app_info` in `.felhom.yml` provides tagline, use_cases, first_steps, prerequisites, default_creds, docs_url
|
||||||
|
|
||||||
## Git sync module (internal/sync)
|
## Git sync module (internal/sync)
|
||||||
|
|
||||||
|
|||||||
+23
-5
@@ -7,7 +7,7 @@
|
|||||||
>
|
>
|
||||||
> Ask Claude Code: "Please update CONTEXT.md with what we did today"
|
> Ask Claude Code: "Please update CONTEXT.md with what we did today"
|
||||||
|
|
||||||
Last updated: 2026-02-14 (session 4)
|
Last updated: 2026-02-14 (session 5)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -22,13 +22,31 @@ Last updated: 2026-02-14 (session 4)
|
|||||||
## Current project state
|
## Current project state
|
||||||
|
|
||||||
### felhom-controller (this repo)
|
### felhom-controller (this repo)
|
||||||
- **Version:** v0.2.1
|
- **Version:** v0.2.11
|
||||||
- **Phase 1:** ✅ COMPLETE — Stack Manager + Deploy Flow
|
- **Phase 1:** ✅ COMPLETE — Stack Manager + Deploy Flow
|
||||||
- **First app deployed:** Paperless-ngx on demo-felhom.eu (2026-02-13)
|
- **First app deployed:** Paperless-ngx on demo-felhom.eu (2026-02-13)
|
||||||
- **Running on:** demo-felhom (N100 mini PC) at 192.168.0.162:8080
|
- **Running on:** demo-felhom (N100 mini PC) at 192.168.0.162:8080
|
||||||
- **All Phase 1 features working:** deploy, start/stop/restart/update, logs, health-aware states, auth
|
- **All Phase 1 features working:** deploy, start/stop/restart/update, logs, health-aware states, auth
|
||||||
|
|
||||||
### What was just completed (2026-02-14 session 4)
|
### What was just completed (2026-02-14 session 5)
|
||||||
|
- **App detail/info pages** — new feature:
|
||||||
|
- New route: `GET /apps/{slug}` renders a full info page (was redirect to deploy page)
|
||||||
|
- Hero section with logo, tagline, resource badges
|
||||||
|
- Screenshots section (graceful — hidden via `onerror` if assets don't exist)
|
||||||
|
- Info cards: use cases, first steps, prerequisites, default credentials, docs link
|
||||||
|
- Optional config form with AJAX save (POST `/api/stacks/{name}/optional-config`)
|
||||||
|
- New `.felhom.yml` fields: `app_info` (tagline, use_cases, first_steps, prerequisites, default_creds, docs_url) and `optional_config` (groups of env var fields)
|
||||||
|
- New structs in `metadata.go`: `AppInfo`, `OptionalConfigGroup`, `OptionalConfigField`
|
||||||
|
- `UpdateOptionalConfig` in `deploy.go`: saves optional env vars to `app.yaml`, restarts deployed stacks with `docker compose up -d` to pick up new env vars
|
||||||
|
- Navigation updated: stack cards on dashboard/stacks pages now link to `/apps/{slug}`, deploy page has "Részletek" link back to info page
|
||||||
|
- **RoMM metadata updated** (app-catalog repo):
|
||||||
|
- Full `app_info` section: tagline, 5 use cases, 6 first steps, 3 prerequisites, default creds, docs URL
|
||||||
|
- 6 optional config fields for metadata providers: IGDB (client_id + secret), SteamGridDB, ScreenScraper (user + password), MobyGames
|
||||||
|
- docker-compose.yml updated with SCREENSCRAPER_USER, SCREENSCRAPER_PASSWORD, MOBYGAMES_API_KEY env vars
|
||||||
|
- Display name fixed: "ROMM" → "RomM"
|
||||||
|
- **Controller version:** v0.2.11
|
||||||
|
|
||||||
|
### Previously completed (2026-02-14 session 4)
|
||||||
- **Fixed deploy race condition** in `internal/stacks/deploy.go`:
|
- **Fixed deploy race condition** in `internal/stacks/deploy.go`:
|
||||||
- In-memory `Deployed` flag now set BEFORE `docker compose up -d` (compose up can take 30-60s for image pulls)
|
- In-memory `Deployed` flag now set BEFORE `docker compose up -d` (compose up can take 30-60s for image pulls)
|
||||||
- On failure: both in-memory state and disk (app.yaml) are reverted
|
- On failure: both in-memory state and disk (app.yaml) are reverted
|
||||||
@@ -120,9 +138,9 @@ Last updated: 2026-02-14 (session 4)
|
|||||||
7. Documentation: restart vs up -d for image updates
|
7. Documentation: restart vs up -d for image updates
|
||||||
|
|
||||||
### What's next (priorities)
|
### What's next (priorities)
|
||||||
1. Build + deploy the updated controller with git sync module
|
1. Add `app_info` + `optional_config` to more apps (start with Immich, Mealie, Vaultwarden)
|
||||||
2. Deploy a second app (e.g., ActualBudget — simplest, or Immich — tests HDD + secrets) to validate all .felhom.yml files
|
2. Deploy a second app (e.g., ActualBudget — simplest, or Immich — tests HDD + secrets) to validate all .felhom.yml files
|
||||||
3. Test git sync end-to-end: push a template change to app-catalog, verify controller picks it up
|
3. Add app screenshots to the asset pipeline (romm-screenshot-1.webp etc.)
|
||||||
4. Test on Raspberry Pi (pi-customer-1)
|
4. Test on Raspberry Pi (pi-customer-1)
|
||||||
5. Add `paths.hdd_path` to demo-felhom controller.yaml to enable HDD bar
|
5. Add `paths.hdd_path` to demo-felhom controller.yaml to enable HDD bar
|
||||||
6. Phase 2 continued: CPU/temperature metrics, Healthchecks.io pings
|
6. Phase 2 continued: CPU/temperature metrics, Healthchecks.io pings
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ controller generates secrets, saves app.yaml, runs `docker compose up -d`, and t
|
|||||||
with Traefik routing and health checks. The dashboard correctly shows real-time container states
|
with Traefik routing and health checks. The dashboard correctly shows real-time container states
|
||||||
including health substatus (starting → healthy → running).
|
including health substatus (starting → healthy → running).
|
||||||
|
|
||||||
Current version: **v0.2.1**
|
Current version: **v0.2.111**
|
||||||
|
|
||||||
### What works
|
### What works
|
||||||
- Dashboard with live container state (green/orange/yellow/red)
|
- Dashboard with live container state (green/orange/yellow/red)
|
||||||
@@ -32,6 +32,8 @@ Current version: **v0.2.1**
|
|||||||
- Stack operations: start, stop, restart, update (pull + recreate)
|
- Stack operations: start, stop, restart, update (pull + recreate)
|
||||||
- Live-scrolling log viewer with auto-refresh (3s polling), pause/resume, and scroll position tracking
|
- Live-scrolling log viewer with auto-refresh (3s polling), pause/resume, and scroll position tracking
|
||||||
- Deploy page doubles as config viewer (read-only mode for deployed apps)
|
- Deploy page doubles as config viewer (read-only mode for deployed apps)
|
||||||
|
- App detail/info pages with use cases, setup guide, screenshots, and optional config
|
||||||
|
- Optional config saves to `app.yaml` and restarts deployed apps (e.g., metadata provider API keys)
|
||||||
- Periodic stack rescanning (every 2 minutes)
|
- Periodic stack rescanning (every 2 minutes)
|
||||||
- Manual rescan endpoint (`POST /api/stacks/rescan`)
|
- Manual rescan endpoint (`POST /api/stacks/rescan`)
|
||||||
- Alphabetically sorted stack display (consistent card ordering)
|
- Alphabetically sorted stack display (consistent card ordering)
|
||||||
@@ -42,7 +44,7 @@ Current version: **v0.2.1**
|
|||||||
- Memory summary bar shown on deploy page before deployment
|
- Memory summary bar shown on deploy page before deployment
|
||||||
- Felhom.eu logo SVG in sidebar and login page
|
- Felhom.eu logo SVG in sidebar and login page
|
||||||
- Verbose debug logging with operation timing, post-start container state checks, and image pull detection
|
- Verbose debug logging with operation timing, post-start container state checks, and image pull detection
|
||||||
- Clickable app cards on dashboard and applications pages (navigate to detail/deploy page)
|
- Clickable app cards on dashboard and applications pages (navigate to info page)
|
||||||
- Memory bar with two-segment visualization on deploy page (committed vs new app allocation)
|
- Memory bar with two-segment visualization on deploy page (committed vs new app allocation)
|
||||||
- Deployment progress UI: 3-step progress panel with real-time health polling (config → containers → health check)
|
- Deployment progress UI: 3-step progress panel with real-time health polling (config → containers → health check)
|
||||||
|
|
||||||
@@ -321,17 +323,17 @@ See `docs/BUILDING.md` for the full guide.
|
|||||||
```bash
|
```bash
|
||||||
# Quick build (current platform only)
|
# Quick build (current platform only)
|
||||||
cd ~/build/felhom-controller
|
cd ~/build/felhom-controller
|
||||||
./build.sh 0.2.1
|
./build.sh 0.2.11
|
||||||
|
|
||||||
# Build + push to Gitea registry
|
# Build + push to Gitea registry
|
||||||
./build.sh 0.2.1 --push
|
./build.sh 0.2.11 --push
|
||||||
```
|
```
|
||||||
|
|
||||||
### Deploy on customer node
|
### Deploy on customer node
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Pull new image
|
# Pull new image
|
||||||
docker pull gitea.dooplex.hu/admin/felhom-controller:0.2.1
|
docker pull gitea.dooplex.hu/admin/felhom-controller:0.2.11
|
||||||
|
|
||||||
# IMPORTANT: use 'up -d', NOT 'restart' — restart doesn't pick up new images
|
# IMPORTANT: use 'up -d', NOT 'restart' — restart doesn't pick up new images
|
||||||
cd /opt/docker/felhom-controller
|
cd /opt/docker/felhom-controller
|
||||||
@@ -342,7 +344,7 @@ docker compose up -d
|
|||||||
|
|
||||||
| Node | Hardware | Domain | IP | Status |
|
| Node | Hardware | Domain | IP | Status |
|
||||||
|------|----------|--------|----|--------|
|
|------|----------|--------|----|--------|
|
||||||
| demo-felhom | Acemagic GK3PLUS N100, 16G RAM, 512G SSD + 1TB HDD | demo-felhom.eu | 192.168.0.162 | ✅ Controller v0.2.1 + Paperless-ngx running |
|
| demo-felhom | Acemagic GK3PLUS N100, 16G RAM, 512G SSD + 1TB HDD | demo-felhom.eu | 192.168.0.162 | ✅ Controller v0.2.11 + Paperless-ngx running |
|
||||||
| pi-customer-1 | Raspberry Pi 3B+, 1G RAM, 32G SD | pi-customer-1.local | — | 📲 Not yet tested |
|
| pi-customer-1 | Raspberry Pi 3B+, 1G RAM, 32G SD | pi-customer-1.local | — | 📲 Not yet tested |
|
||||||
|
|
||||||
### First deployment log (Paperless-ngx on demo-felhom)
|
### First deployment log (Paperless-ngx on demo-felhom)
|
||||||
@@ -372,6 +374,7 @@ docker compose up -d
|
|||||||
| POST | `/api/stacks/{name}/stop` | Yes | Stop stack (not protected) |
|
| POST | `/api/stacks/{name}/stop` | Yes | Stop stack (not protected) |
|
||||||
| POST | `/api/stacks/{name}/restart` | Yes | Restart stack |
|
| POST | `/api/stacks/{name}/restart` | Yes | Restart stack |
|
||||||
| POST | `/api/stacks/{name}/update` | Yes | Pull images + recreate |
|
| POST | `/api/stacks/{name}/update` | Yes | Pull images + recreate |
|
||||||
|
| POST | `/api/stacks/{name}/optional-config` | Yes | Update optional config env vars |
|
||||||
| GET | `/api/stacks/{name}/logs` | Yes | Container logs (add `?raw=1` for plain text) |
|
| GET | `/api/stacks/{name}/logs` | Yes | Container logs (add `?raw=1` for plain text) |
|
||||||
| POST | `/api/stacks/rescan` | Yes | Trigger manual stack discovery |
|
| POST | `/api/stacks/rescan` | Yes | Trigger manual stack discovery |
|
||||||
| GET | `/api/system/info` | Yes | System resource usage (RAM, disk, HDD) |
|
| GET | `/api/system/info` | Yes | System resource usage (RAM, disk, HDD) |
|
||||||
|
|||||||
Reference in New Issue
Block a user