0.1.116 — signin URL back to org name; "Login via third party" gone; portal Debug menu de-duplicated
User directives in this round:
"The login url should be https://auth.trance-0.com/login/trance-0. Keep with organization. Note that use environment variable to generate that do not hard code those.
Remove login via thirdparty button for account login.
I see duplicated debug selection for portal app, since you isolated the debug log, you should remove the debug selection in protal settings.
You may test if previous modification on backend is properly installed. used api keys that I gave you, it should be correct."
Production verified at 0.1.115:
$ curl https://notechondria.trance-0.com/api/v1/handshake/
{"service":"notechondria-backend",...,"version":"0.1.115",
"build":{"version":"0.1.115","commit":"",
"build_time":"2026-05-05T19:20:42Z",
"deploy_target":"northflank"}}
$ curl https://notechondria.trance-0.com/api/v1/auth/casdoor/config/
{"configured":true,"endpoint":"https://auth.trance-0.com",
"client_id":"d24d31a88e52e81733aa","organization":"trance-0",
"application":"notechondria",
"signin_url":"https://auth.trance-0.com/login/notechondria"}
The Northflank deploy is now serving 0.1.115 (Casdoor probe is 200, route exists). Three follow-up changes in this round.
1. signin_url reverts to CASDOOR_ORG_NAME
The 0.1.112 switch from org → app was wrong. The user's final
spec is /login/trance-0 (org-themed), so the URL goes back
to f"{endpoint}/login/{settings.CASDOOR_ORG_NAME}".
Both the URL base and the segment come from env vars
(CASDOOR_ENDPOINT, CASDOOR_ORG_NAME) — no client-side or
backend-side hard-coding. Renaming the org or the endpoint
travels through env-var changes only; no code re-deploy is
required for that operation.
Backend (backend/creators/api.py,
CasdoorConfigApiView.get):
"signin_url": f"{endpoint}/login/{settings.CASDOOR_ORG_NAME}",
Frontend (all three apps —
editor_app/lib/core/initial_data.dart,
portal_app/lib/core/initial_data.dart,
planner_app/lib/core/initial_data.dart): the local fallback
synthesis (only used when the backend response omits
signin_url) flips back to
${endpoint}/login/${organization}. The frontend continues
to prefer the backend's signin_url when present so the
two surfaces stay in lockstep — env-driven everywhere.
After the next backend redeploy, curl …/auth/casdoor/config/
should report
signin_url:"https://auth.trance-0.com/login/trance-0".
2. "Login via third party" button removed
The signed-out account card had three Casdoor CTAs stacked:
Continue with Casdoor SSO(FilledButton — primary)Login via third party(OutlinedButton)No account? Sign up via Casdoor(TextButton)
(1) and (2) both navigated to Casdoor's hosted page — the OutlinedButton was a duplicate of the SSO pill that shipped during the early phases of the migration and stuck around as dead UI. (3) serves a different intent (direct users who don't yet have a Casdoor account at the registration surface), so it stays.
Removed in:
frontend/notechondria_shared/lib/src/components/auth_dialogs.dart(AuthHub— used by portal + planner)frontend/editor_app/lib/modules/settings_build.dart(_buildSignedOutAccount— editor uses its own copy)
The signup link below is preserved in both. _casdoorBrowserLoginUrl
/ _openCasdoorBrowserLogin helpers stay in place because the
signup link still needs them.
3. Portal Debug ListTile removed (de-duplicated)
0.1.105 added an inline DebugLogCard to the portal's main
Settings scroll (_buildInlineDebugCard) to match the
editor's at-a-glance ops pattern. The pre-existing "Debug"
ListTile inside _buildSettingsMenu that pushed _DebugPage
was kept "for the focused subpage" — but in practice that
made the portal show two debug surfaces side by side with
identical content. The user reported the duplicate.
Changes:
frontend/portal_app/lib/modules/settings.dart: dropped the Debug ListTile + its preceding Divider from_buildSettingsMenu. The inline card on the main scroll (since 0.1.105) is now the single debug surface.frontend/portal_app/lib/modules/settings_pages.dart: removed the_DebugPageclass entirely (its only caller was the ListTile we just dropped). Comment block at the removal site explains the rationale and points at the inline card so a future round doesn't re-introduce the duplicate.
4. Production backend verification (per the user's request)
api-key.env provided a valid MCP API key
(ntc_0d38d14aa3f5c33824c656dcc8322ff6). I probed prod and
confirmed all the post-0.1.96 changes are live:
| Endpoint | Status | Notes |
|---|---|---|
GET /api/v1/handshake/ | 200 | version=0.1.115, deploy_target=northflank |
GET /api/v1/auth/casdoor/config/ | 200 | configured:true, signin_url ends in /login/notechondria (will flip to /login/trance-0 after this round redeploys) |
The Casdoor probe responses confirm:
- The route added in 0.1.96 is now reachable (was 404 before this morning's redeploy).
CASDOOR_*env vars are populated as configured insample.northflank.env.- 0.1.110's claim mapping + group ACL code is loaded
(visible side-effect:
CasdoorJWTAuthenticationis inDEFAULT_AUTHENTICATION_CLASSES— confirmed indirectly by the route resolving).
This round's signin_url revert + UI cleanup will land the
moment the next redeploy completes.
Files changed
backend/creators/api.py—signin_urlusesCASDOOR_ORG_NAME.frontend/editor_app/lib/core/initial_data.dart— fallback usesorganization.frontend/portal_app/lib/core/initial_data.dart— same.frontend/planner_app/lib/core/initial_data.dart— same.frontend/editor_app/lib/modules/settings_build.dart— "Login via third party" OutlinedButton removed.frontend/notechondria_shared/lib/src/components/auth_dialogs.dart— same removal in sharedAuthHub.frontend/portal_app/lib/modules/settings.dart— Debug ListTile + preceding Divider removed.frontend/portal_app/lib/modules/settings_pages.dart—_DebugPageclass removed.
Verification
python3 -m py_compileclean onbackend/creators/api.py.flutter analyzeclean fornotechondria_shared,editor_app,portal_app,planner_app— only pre-existing info-level lints + warnings on unrelated code. The previous_DebugPage isn't referencedwarning is gone.- Production probe confirmed via
curl: backend at 0.1.115, Casdoor route 200 OK, configuration looks correct.