fix(library): visibility hover + workspace filter + tab Repository pour Gitea
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped

- CSS hover-only: visibility:hidden/visible au lieu de opacity (infaillible)
- Workspace tab: filtré par workspace_id quand un workspace est actif
- Tab Private remplacé par Repository (visible seulement si Gitea workspace actif)
- Nouvel endpoint /api/library/repository pour le contenu Gitea
- dashboard.py passe is_gitea_workspace, owner, repo au template
This commit is contained in:
2026-07-19 13:32:08 -04:00
parent 04c059341d
commit 2ee0a05efd
3 changed files with 67 additions and 11 deletions
+4
View File
@@ -221,6 +221,10 @@ async def library_page(request: Request, owner: str = Query(default=""), repo: s
template = env.get_template("library.html")
sidebar["active_workspace_id"] = sidebar.get("nav_workspace_id", 0)
# Gitea workspace context for Repository tab
sidebar["is_gitea_workspace"] = bool(owner and repo)
sidebar["gitea_workspace_owner"] = owner
sidebar["gitea_workspace_repo"] = repo
return template.render(**sidebar)
+30
View File
@@ -271,11 +271,36 @@ async def library_children(page_id: int, request: Request):
return {"items": items}
@router.get("/repository")
async def library_repository(
request: Request,
gitea_owner: str = Query(default=""),
gitea_repo: str = Query(default=""),
):
"""Return Gitea repository pages/files for the Library Repository tab."""
if not gitea_owner or not gitea_repo:
return {"items": []}
uid = _get_user_id(request)
ws_key = f"{gitea_owner}/{gitea_repo}"
query = f"{BASE_SELECT} FROM pages p WHERE p.workspace = ? AND p.deleted_at IS NULL"
params = [ws_key]
query += " ORDER BY p.updated_at DESC LIMIT 100"
with get_conn() as conn:
rows = conn.execute(query, params).fetchall()
items = _rows_to_items(rows, uid)
_enrich_children(items)
return {"items": items}
@router.get("/workspace")
async def library_workspace(
request: Request,
source_type: str = Query(default="all"),
tree: int = Query(default=0),
workspace_id: int = Query(default=0),
):
if source_type not in SOURCE_TYPES:
source_type = "all"
@@ -283,6 +308,11 @@ async def library_workspace(
uid = _get_user_id(request)
query = f"{BASE_SELECT} FROM pages p WHERE p.workspace != '' AND p.parent_section != 'Trash' AND p.deleted_at IS NULL"
params: list = []
if workspace_id:
query += " AND p.workspace_id = ?"
params.append(workspace_id)
query, params = _apply_source_filter(query, params, source_type)
query += " ORDER BY p.updated_at DESC LIMIT 50"