Skip to content

feat(server): implement firmware-facing account and app center endpoints#23

Open
Flo5k5 wants to merge 1 commit intom5stack:mainfrom
Flo5k5:feat/missing-endpoints
Open

feat(server): implement firmware-facing account and app center endpoints#23
Flo5k5 wants to merge 1 commit intom5stack:mainfrom
Flo5k5:feat/missing-endpoints

Conversation

@Flo5k5
Copy link
Copy Markdown

@Flo5k5 Flo5k5 commented Apr 22, 2026

The firmware calls three endpoints that the open-source server did not
expose, so self-hosted devices currently receive 404 on every boot:

  • GET /stackChan/device/user (firmware/main/hal/hal_account.cpp:20)
  • POST /stackChan/device/unbind (firmware/main/hal/hal_account.cpp:22)
  • GET /stackChan/apps (firmware/main/hal/hal_app_center.cpp:15)

This change adds minimal implementations so the firmware boot flow
completes cleanly on a vanilla server:

  • device/user returns a default "Self-hosted User" placeholder
  • device/unbind is a no-op success
  • apps returns an empty catalogue (new internal/controller/app package)
  • device/info accepts an empty mac and returns an empty placeholder to
    match the firmware's no-arg call pattern without breaking mac-based
    callers (iOS app keeps passing mac in query string)

Production deployments are expected to extend these handlers with real
account / authentication logic keyed off the Authorization header.

The firmware calls three endpoints that the open-source server did not
expose, so self-hosted devices currently receive 404 on every boot:

- GET  /stackChan/device/user    (firmware/main/hal/hal_account.cpp:20)
- POST /stackChan/device/unbind  (firmware/main/hal/hal_account.cpp:22)
- GET  /stackChan/apps           (firmware/main/hal/hal_app_center.cpp:15)

This change adds minimal implementations so the firmware boot flow
completes cleanly on a vanilla server:

- device/user returns a default "Self-hosted User" placeholder
- device/unbind is a no-op success
- apps returns an empty catalogue (new internal/controller/app package)
- device/info accepts an empty mac and returns an empty placeholder to
  match the firmware's no-arg call pattern without breaking mac-based
  callers (iOS app keeps passing mac in query string)

Production deployments are expected to extend these handlers with real
account / authentication logic keyed off the Authorization header.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant