• Mahmoud Aglan's avatar
    feat(caprover): sorting, live log viewer — and fix broken per-app URLs · a0d8b3b8
    Mahmoud Aglan authored
    SORTING by last deployed (default), name, status or version. Apps with no deploy
    timestamp sort last rather than as the epoch: "unknown" is not "ancient".
    Building sorts above running above stopped, because the one that is changing is
    the one you opened the tab for.
    
    LIVE LOG VIEWER for both build output and runtime logs, polled every 3s.
    CapRover exposes no log stream, and a poll is what survives a phone moving
    between networks anyway. Follow-mode sticks to the bottom until you scroll up
    and stops fighting you — reading history while lines arrive is the normal reason
    to open a log. Build logs stop polling once the build ends rather than hitting
    CapRover every three seconds forever. Errors and warnings are coloured, lines
    are filterable, and the whole buffer copies in one tap.
    
    FIXED, and this one was live: every per-app CapRover URL had an escaped dollar
    sign — '/api/caprover/apps/\$name' — so the path was sent with a literal
    backslash-dollar-name instead of the app. It came from a heredoc when the client
    was first written. capApps() has no interpolation, so listing worked and I
    verified against it; inspect, deploy, set-repo and logs were all broken and none
    of them had been exercised. Testing the one endpoint that happened to work is
    not testing the feature.
    Co-Authored-By: 's avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
    a0d8b3b8
caprover_screen.dart 20.8 KB