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:

  1. Continue with Casdoor SSO (FilledButton — primary)
  2. Login via third party (OutlinedButton)
  3. 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 _DebugPage class 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:

EndpointStatusNotes
GET /api/v1/handshake/200version=0.1.115, deploy_target=northflank
GET /api/v1/auth/casdoor/config/200configured: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 in sample.northflank.env.
  • 0.1.110's claim mapping + group ACL code is loaded (visible side-effect: CasdoorJWTAuthentication is in DEFAULT_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.pysignin_url uses CASDOOR_ORG_NAME.
  • frontend/editor_app/lib/core/initial_data.dart — fallback uses organization.
  • 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 shared AuthHub.
  • frontend/portal_app/lib/modules/settings.dart — Debug ListTile + preceding Divider removed.
  • frontend/portal_app/lib/modules/settings_pages.dart_DebugPage class removed.

Verification

  • python3 -m py_compile clean on backend/creators/api.py.
  • flutter analyze clean for notechondria_shared, editor_app, portal_app, planner_app — only pre-existing info-level lints + warnings on unrelated code. The previous _DebugPage isn't referenced warning is gone.
  • Production probe confirmed via curl: backend at 0.1.115, Casdoor route 200 OK, configuration looks correct.