diff --git a/app/routers/dashboard.py b/app/routers/dashboard.py
index 38c79fa..6abd441 100644
--- a/app/routers/dashboard.py
+++ b/app/routers/dashboard.py
@@ -393,6 +393,20 @@ async def workspace_page(request: Request):
return template.render(**ctx)
+@router.get("/gitea-workspace", response_class=HTMLResponse)
+async def gitea_workspace_page(request: Request):
+ """Gitea workspace β browse repo files."""
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader("app/templates"))
+ sidebar = _sidebar_data(request, [])
+ user = SessionManager.decode_session(request.cookies.get("flowdeck_session", ""))
+ if not user:
+ return RedirectResponse("/auth/login?provider=local", status_code=302)
+ ctx = {**sidebar, "user": user}
+ template = env.get_template("gitea_workspace.html")
+ return template.render(**ctx)
+
+
@router.get("/api/workspace/projects")
async def list_workspace_projects(request: Request):
"""List all projects: built-in + Gitea + GitHub."""
diff --git a/app/routers/gitea.py b/app/routers/gitea.py
index 835d1b5..efa7bc0 100644
--- a/app/routers/gitea.py
+++ b/app/routers/gitea.py
@@ -6,11 +6,12 @@ router = APIRouter(tags=["gitea"], prefix="/api/gitea")
def _require_gitea(request: Request):
- """Return a per-user GiteaClient or raise 401."""
- from app.services.gitea_client import get_user_gitea_client
+ """Return a per-user GiteaClient or fallback to admin token."""
+ from app.services.gitea_client import get_user_gitea_client, GiteaClient
client = get_user_gitea_client(request)
if not client:
- raise HTTPException(status_code=401, detail="Gitea account not linked. Login with Gitea or connect in Settings.")
+ # Fallback to server admin token
+ client = GiteaClient()
return client
diff --git a/app/templates/gitea_workspace.html b/app/templates/gitea_workspace.html
new file mode 100644
index 0000000..2123ce3
--- /dev/null
+++ b/app/templates/gitea_workspace.html
@@ -0,0 +1,340 @@
+{% extends "base.html" %}
+{% block page_title %}Gitea Workspace{% endblock %}
+{% block page_icon %}π{% endblock %}
+
+{% block topbar %}
+
Create FlowDeck pages attached to this Gitea project. These are stored locally, not in the repo.
+ +Select a file from the tree to view it, or create a private page.
+