Compare commits

...
Author SHA1 Message Date
rockachopa e837934bec Merge pull request 'fix: Serve dashboard independently of process working directory' (#47) from timmy/46-serve-dashboard-independent-of-cwd into main
CI / lint (push) Successful in 9s
Release / release-candidate (push) Successful in 4s
CI / build-frontend (push) Successful in 4s
2026-08-05 22:18:23 +00:00
timmy f0dc260c9b fix: serve dashboard independently of process cwd (#46)
CI / lint (pull_request) Successful in 10s
CI / build-frontend (pull_request) Successful in 5s
2026-08-05 22:17:33 +00:00
rockachopa 94cdd0f407 Merge pull request 'feat: Stop tracked Python bytecode from dirtying autonomous worktree' (#45) from timmy/44-stop-tracked-python-bytecode-from-dirtying-auton into main
CI / lint (push) Successful in 7s
Release / release-candidate (push) Successful in 4s
CI / build-frontend (push) Successful in 5s
2026-08-05 15:39:42 +00:00
timmy 9b912fc837 fix: stop tracking Python bytecode
CI / lint (pull_request) Successful in 8s
CI / build-frontend (pull_request) Successful in 5s
2026-08-05 15:38:50 +00:00
rockachopa d7bdbd3e18 Merge pull request 'feat: Add realtime Gitea event stream widget' (#43) from timmy/41-add-realtime-gitea-event-stream-widget into main
CI / lint (push) Successful in 10s
Release / release-candidate (push) Successful in 4s
CI / build-frontend (push) Successful in 5s
2026-08-05 15:34:56 +00:00
timmy 4afa4032d7 fix: preserve Gitea events on refresh failure (#41)
CI / lint (pull_request) Successful in 8s
CI / build-frontend (pull_request) Successful in 5s
2026-08-05 15:34:05 +00:00
rockachopa 582ab559c7 Merge pull request 'feat: Fallback context endpoint timeout' (#42) from timmy/40-fallback-context-endpoint-timeout into main
CI / lint (push) Successful in 8s
Release / release-candidate (push) Successful in 5s
CI / build-frontend (push) Successful in 5s
2026-08-05 15:04:17 +00:00
13 changed files with 42 additions and 2 deletions

No files matched your search

+1 -1
View File
@@ -258,7 +258,7 @@ textarea { resize: vertical; min-height: 120px; }
paintEventStream(await res.json());
setEventStreamStatus('Updated ' + fmt(new Date()));
} catch (e) {
qs('#gitea-events').innerHTML = '<div class="muted">Event stream unavailable.</div>';
setEventStreamStatus('Update failed · showing last activity');
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+4 -1
View File
@@ -1,9 +1,12 @@
from pathlib import Path
from fastapi import APIRouter
from fastapi.responses import HTMLResponse
router = APIRouter()
DASHBOARD_FILE = Path(__file__).resolve().parent.parent / "frontend" / "index.html"
@router.get("/", response_class=HTMLResponse)
async def dashboard() -> str:
return open("frontend/index.html").read()
return DASHBOARD_FILE.read_text()
Binary file not shown.
+7
View File
@@ -28,6 +28,13 @@ def test_event_stream_reports_when_activity_was_refreshed():
assert "setEventStreamStatus('Updated ' + fmt(new Date()))" in html
def test_event_stream_reports_refresh_failure_without_erasing_visible_events():
html = DASHBOARD.read_text()
assert "setEventStreamStatus('Update failed · showing last activity')" in html
assert "qs('#gitea-events').innerHTML = '<div class=\"muted\">Event stream unavailable.</div>'" not in html
@pytest.mark.anyio
async def test_event_stream_returns_recent_authenticated_gitea_activity(monkeypatch):
expected = [{"type": "create", "actor": {"login": "timmy"}}]
+18
View File
@@ -0,0 +1,18 @@
import subprocess
def test_python_bytecode_is_not_tracked():
tracked = subprocess.run(
["git", "ls-files"],
check=True,
capture_output=True,
text=True,
).stdout.splitlines()
bytecode = [
path
for path in tracked
if "__pycache__" in path.split("/") or path.endswith((".pyc", ".pyo"))
]
assert bytecode == []
+12
View File
@@ -0,0 +1,12 @@
import pytest
from src.views import dashboard
@pytest.mark.anyio
async def test_dashboard_renders_outside_repository_working_directory(monkeypatch, tmp_path):
monkeypatch.chdir(tmp_path)
html = await dashboard()
assert "Stackchain Dashboard" in html