Compare commits
base: retoor/devplacepy:cd7cb049a8bd631734d16f5ce8afeba3f846c948
retoor/devplacepy:master
retoor/devplacepy:typosaurus/169-implement-links-to-the-official-ios-app-in-the-web-app
retoor/devplacepy:typosaurus/162-add-non-color-indicator-to-vote-button-state
retoor/devplacepy:typosaurus/132-missing-notification-when-another-user-comments-on-a-post-th
retoor/devplacepy:typosaurus/134-cosmetic-title-replaces-clickable-username-on-leaderboard
retoor/devplacepy:typosaurus/157-add-badge-earned-info-to-user-profile-badges-api-response
retoor/devplacepy:typosaurus/ticket-150
retoor/devplacepy:typosaurus/ticket-152
retoor/devplacepy:typosaurus/ticket-148
retoor/devplacepy:typosaurus/ticket-146
retoor/devplacepy:typosaurus/112-expose-level-progress-percentage-in-profile-api-response
retoor/devplacepy:typosaurus/113-fix-badge-names-returning-null-in-profile-endpoint
retoor/devplacepy:typosaurus/138-fix-navigation-bar-link-icons-and-text-appearing-on-separate
retoor/devplacepy:typosaurus/ticket-138
retoor/devplacepy:typosaurus/ticket-135
retoor/devplacepy:typosaurus/ticket-132
retoor/devplacepy:typosaurus/ticket-110
retoor/devplacepy:typosaurus/ticket-116
retoor/devplacepy:typosaurus/ticket-113
retoor/devplacepy:typosaurus/ticket-114
retoor/devplacepy:typosaurus/ticket-111
retoor/devplacepy:typosaurus/ticket-112
retoor/devplacepy:typosaurus/ticket-106
retoor/devplacepy:typosaurus/ticket-104
retoor/devplacepy:typosaurus/ticket-84
retoor/devplacepy:typosaurus/ticket-93
retoor/devplacepy:typosaurus/ticket-73
retoor/devplacepy:typosaurus/ticket-89
retoor/devplacepy:typosaurus/ticket-85
retoor/devplacepy:typosaurus/ticket-86
retoor/devplacepy:typosaurus/ticket-88
retoor/devplacepy:typosaurus/ticket-105
retoor/devplacepy:typosaurus/ticket-95
retoor/devplacepy:typosaurus/ticket-102
retoor/devplacepy:typosaurus/ticket-91
retoor/devplacepy:typosaurus/ticket-90
retoor/devplacepy:typosaurus/ticket-87
retoor/devplacepy:typosaurus/ticket-72
retoor/devplacepy:typosaurus/ticket-81
retoor/devplacepy:typosaurus/ticket-83
retoor/devplacepy:typosaurus/ticket-78
retoor/devplacepy:typosaurus/ticket-74
retoor/devplacepy:typosaurus/ticket-82
retoor/devplacepy:typosaurus/ticket-97
retoor/devplacepy:typosaurus/ticket-99
retoor/devplacepy:typosaurus/ticket-68
retoor/devplacepy:typosaurus/ticket-66
retoor/devplacepy:typosaurus/ticket-75
retoor/devplacepy:typosaurus/ticket-61
retoor/devplacepy:typosaurus/ticket-44
retoor/devplacepy:typosaurus/ticket-57
retoor/devplacepy:typosaurus/ticket-48
retoor/devplacepy:typosaurus/ticket-64
retoor/devplacepy:typosaurus/ticket-94
retoor/devplacepy:typosaurus/ticket-103
retoor/devplacepy:typosaurus/ticket-26
retoor/devplacepy:typosaurus/ticket-71
retoor/devplacepy:typosaurus/ticket-7
retoor/devplacepy:typosaurus/ticket-70
retoor/devplacepy:typosaurus/ticket-10
retoor/devplacepy:typosaurus/ticket-65
retoor/devplacepy:typosaurus/ticket-69
retoor/devplacepy:typosaurus/ticket-67
retoor/devplacepy:typosaurus/ticket-76
retoor/devplacepy:typosaurus/ticket-21
retoor/devplacepy:production
..
compare: retoor/devplacepy:0a554ebc32ed500531f145ce19df92797442ade6
retoor/devplacepy:master
retoor/devplacepy:typosaurus/169-implement-links-to-the-official-ios-app-in-the-web-app
retoor/devplacepy:typosaurus/162-add-non-color-indicator-to-vote-button-state
retoor/devplacepy:typosaurus/132-missing-notification-when-another-user-comments-on-a-post-th
retoor/devplacepy:typosaurus/134-cosmetic-title-replaces-clickable-username-on-leaderboard
retoor/devplacepy:typosaurus/157-add-badge-earned-info-to-user-profile-badges-api-response
retoor/devplacepy:typosaurus/ticket-150
retoor/devplacepy:typosaurus/ticket-152
retoor/devplacepy:typosaurus/ticket-148
retoor/devplacepy:typosaurus/ticket-146
retoor/devplacepy:typosaurus/112-expose-level-progress-percentage-in-profile-api-response
retoor/devplacepy:typosaurus/113-fix-badge-names-returning-null-in-profile-endpoint
retoor/devplacepy:typosaurus/138-fix-navigation-bar-link-icons-and-text-appearing-on-separate
retoor/devplacepy:typosaurus/ticket-138
retoor/devplacepy:typosaurus/ticket-135
retoor/devplacepy:typosaurus/ticket-132
retoor/devplacepy:typosaurus/ticket-110
retoor/devplacepy:typosaurus/ticket-116
retoor/devplacepy:typosaurus/ticket-113
retoor/devplacepy:typosaurus/ticket-114
retoor/devplacepy:typosaurus/ticket-111
retoor/devplacepy:typosaurus/ticket-112
retoor/devplacepy:typosaurus/ticket-106
retoor/devplacepy:typosaurus/ticket-104
retoor/devplacepy:typosaurus/ticket-84
retoor/devplacepy:typosaurus/ticket-93
retoor/devplacepy:typosaurus/ticket-73
retoor/devplacepy:typosaurus/ticket-89
retoor/devplacepy:typosaurus/ticket-85
retoor/devplacepy:typosaurus/ticket-86
retoor/devplacepy:typosaurus/ticket-88
retoor/devplacepy:typosaurus/ticket-105
retoor/devplacepy:typosaurus/ticket-95
retoor/devplacepy:typosaurus/ticket-102
retoor/devplacepy:typosaurus/ticket-91
retoor/devplacepy:typosaurus/ticket-90
retoor/devplacepy:typosaurus/ticket-87
retoor/devplacepy:typosaurus/ticket-72
retoor/devplacepy:typosaurus/ticket-81
retoor/devplacepy:typosaurus/ticket-83
retoor/devplacepy:typosaurus/ticket-78
retoor/devplacepy:typosaurus/ticket-74
retoor/devplacepy:typosaurus/ticket-82
retoor/devplacepy:typosaurus/ticket-97
retoor/devplacepy:typosaurus/ticket-99
retoor/devplacepy:typosaurus/ticket-68
retoor/devplacepy:typosaurus/ticket-66
retoor/devplacepy:typosaurus/ticket-75
retoor/devplacepy:typosaurus/ticket-61
retoor/devplacepy:typosaurus/ticket-44
retoor/devplacepy:typosaurus/ticket-57
retoor/devplacepy:typosaurus/ticket-48
retoor/devplacepy:typosaurus/ticket-64
retoor/devplacepy:typosaurus/ticket-94
retoor/devplacepy:typosaurus/ticket-103
retoor/devplacepy:typosaurus/ticket-26
retoor/devplacepy:typosaurus/ticket-71
retoor/devplacepy:typosaurus/ticket-7
retoor/devplacepy:typosaurus/ticket-70
retoor/devplacepy:typosaurus/ticket-10
retoor/devplacepy:typosaurus/ticket-65
retoor/devplacepy:typosaurus/ticket-69
retoor/devplacepy:typosaurus/ticket-67
retoor/devplacepy:typosaurus/ticket-76
retoor/devplacepy:typosaurus/ticket-21
retoor/devplacepy:production
5
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0a554ebc32 |
feat: restrict backup archive download to primary admin and hide admin-hidden projects from other admins
DevPlace CI / test (push) Failing after 22m57s
- Add `get_admin_uids()` and `get_primary_admin_uid()` to database.py for resolving the earliest-created admin - Modify `can_view_project()` in content.py so a project hidden by an admin is invisible to other admins (both web UI and REST API) - Update `_download_url()` and `_backup_payload()` in admin/backups.py to accept a `can_download` flag, gating the download endpoint with `is_primary_admin()` - Remove `role` from `_user_facts()` in docs_live.py to avoid leaking admin status in live docs - Update doc summaries in docs_api.py to reflect the new admin-visibility and backup-download semantics |
||
|
|
6b5347103b | fix: replace flex shorthand with single value and refactor mobile keyboard inset logic in messages layout | ||
|
|
dcb3f08ac1 |
feat: add name-based lookup fallback and terminal session management for containers
Add name field as third fallback in get_instance lookup chain to support container retrieval by display name. Introduce new terminal.py module with async PTY session handling, pubsub-based I/O streaming, resize control, and audit logging for container exec sessions. |
||
|
|
35040204c9 | fix: comment out optimistic message append to prevent duplicate bubbles in MessagesLayout | ||
|
|
7bc67662fa |
feat: add provider and model routing tables, admin UI, and audit category for gateway
Implement the multi-provider routing system for the OpenAI gateway, including two new database tables (`gateway_providers`, `gateway_models`) ensured at init, a new admin page at `/admin/gateway` with full CRUD for providers and model routes, and a `"gateway"` audit category mapped to `"ai"`. The routing layer sits transparently on top of the existing single-provider default path: unmatched model names fall through unchanged, while matched routes forward to the configured provider with their own pricing economy, vision model, and context window. Cross-worker cache invalidation uses a shared `_ROUTING_CACHE` bumped via `"gateway_routing"` cache version. |