feat: login MAS OIDC end-to-end (issue 0147)

Backend Go:
- MatrixService with Login/GetSession/Logout bindings
- Uses 3 registry helpers via go.work:
  - mas_oidc_loopback_go_infra (PKCE flow)
  - keyring_token_store_go_infra (SO keychain)
  - matrix_client_init_go_infra (mautrix client)
- whoami helper to discover user_id+device_id pre-init

Frontend React+Vite+TS:
- Mantine v7 + @tabler/icons-react
- LoginScreen with 'Sign in with Matrix' button
- HomeScreen with profile card + logout
- Dark theme violet accent
- @mantine/notifications wired

Wails config:
- Switched to pnpm (workspace: protocol)
- Bindings auto-generated for MatrixService
- 1280x800 default window

Build: 68MB linux/amd64 binary in build/bin/
This commit is contained in:
egutierrez
2026-05-24 23:23:35 +02:00
parent 42adfdfd97
commit f28c2b121e
21 changed files with 2053 additions and 238 deletions
+11 -10
View File
@@ -1,7 +1,9 @@
package main
import (
"context"
"embed"
"log"
"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/options"
@@ -12,25 +14,24 @@ import (
var assets embed.FS
func main() {
// Create an instance of the app structure
app := NewApp()
ms := NewMatrixService()
// Create application with options
err := wails.Run(&options.App{
Title: "matrix_client_pc",
Width: 1024,
Height: 768,
Width: 1280,
Height: 800,
AssetServer: &assetserver.Options{
Assets: assets,
},
BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1},
OnStartup: app.startup,
BackgroundColour: &options.RGBA{R: 26, G: 27, B: 30, A: 1},
OnStartup: func(ctx context.Context) {
ms.SetContext(ctx)
},
Bind: []interface{}{
app,
ms,
},
})
if err != nil {
println("Error:", err.Error())
log.Fatalln("Wails error:", err)
}
}