Skip to content

Conform package to registry conventions and rework credential flow - #1

Merged
MattDHill merged 2 commits into
mainfrom
package-audit
Jun 11, 2026
Merged

MattDHill merged 2 commits into
mainfrom
package-audit

Conversation

@helix-a

@helix-a helix-a commented Jun 11, 2026

Copy link
Copy Markdown
Member

Summary

Full audit pass to ready this package for the community registry, verified end-to-end on a StartOS 0.4.0-beta.9 box.

Credential flow (the big one)

  • Replaces the seeded-admin-password + get-admin-credentials anti-pattern with the canonical shape from the packaging guide's admin-credentials recipe: a setupOnInit watcher surfaces a critical task until a password is stored, and a Set Admin Password action generates the password, applies it via manage.py in a temporary subcontainer (get_or_create + set_password, run as the paperless user like the image's own init scripts), stores it, and returns it. The same action covers first-set and rotation; upstream's env-based manage_superuser path is unused (verified create-only — it can never rotate).
  • Running the action before first start hits a friendly guard ("start the service…") instead of a Django traceback.
  • main.ts reads only secretKey from the store, so setting/rotating the password does not restart the service.

Soundness fixes

  • icon.svg and LICENSE were symlinks into a never-checked-out submodule (broken in any bare clone); replaced with real files — white-on-green leaf derived from the upstream logo, GPL-3.0 text matching the manifest. Removed .gitmodules and two stray gitlinks (upstream-project, ai-service-packaging) plus the corrupted .gitignore line they caused.
  • Docs no longer direct users to a consume folder they cannot reach on StartOS; ingestion is documented as web upload, mail fetch, and API (File Browser dependency mount noted in TODO.md as the future integration).

Conventions

  • start-sdk 1.5.0 → 1.5.3; secrets via utils.getDefaultString; version file renamed to current.ts at 2.20.15:0.
  • Boilerplate matched to hello-world exactly (s9pk.mk, tsconfig, .gitignore, .dockerignore, AGENTS.md, CLAUDE.md); workflows added (triggers on main); UPDATING.md, TODO.md, assets/ added; packageRepo → Start9-Community.

Verified on hardware

Install → health green → critical task present → action → task clears → real login (HTTP 200, DRF token) through the TLS vhost → rotate → old password rejected (400), new accepted (200). Fresh-reinstall pass exercised the pre-init guard and the full first-run order on a virgin database.

🤖 Generated with Claude Code

helix-a and others added 2 commits June 11, 2026 15:50
- replace seeded-password + get-credentials anti-pattern with the canonical
  setupOnInit watcher (critical task) + set-admin-password action; password
  applied via manage.py in a temp subcontainer, covers first-set and reset
- bump start-sdk 1.5.0 -> 1.5.3; rename version file to current.ts (2.20.15:0)
- remove dead upstream-project submodule and stray gitlink; replace symlinked
  icon/LICENSE with real files (white-on-green leaf, GPL-3.0)
- match hello-world boilerplate exactly (s9pk.mk, .gitignore, AGENTS, CLAUDE);
  add workflows (main branch), UPDATING, TODO, assets/
- point packageRepo at Start9-Community; sync README/instructions with the
  actual UX (no user-reachable consume folder; web/mail/API ingestion)

Verified on StartOS 0.4.0-beta.9: install, health, task lifecycle, login,
rotation, and pre-init guard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MattDHill
MattDHill merged commit 8253738 into main Jun 11, 2026
1 check passed
@helix-a

helix-a commented Jun 11, 2026

Copy link
Copy Markdown
Member Author

Thanks for the review and merge, @MattDHill! 🎉 Registry conformance + the reworked credential flow are now on main.

@MattDHill
MattDHill deleted the package-audit branch July 25, 2026 16:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants