{% extends "_base.html" %} {% from "_macros.html" import modal %} {% block title %}Projects · Urika{% endblock %} {% block heading %}Projects{% endblock %} {% block content %}
{% if projects %} {# Live filter + sort over the rendered DOM. "newest" and "recent" both sort by last_activity desc — when a separate created_at field exists they could diverge. #}
{% else %}

No projects yet. Click + New project above to create one.

{% endif %} {% call modal('new-project', 'New project') %}
Captured for a future asynchronous builder-agent pass. The synchronous create flow does scan + profile + knowledge ingestion non-interactively and skips the agent scoping loop.
{# GitHub auto-create — cross-surface parity with ``urika new --github / --public``. When unchecked, falls back to ``[preferences] github_auto_create`` server-side. When ``gh`` is missing/unauthed, the failure is non-fatal: the project is still created and the response carries the failure detail. #}
Requires the gh CLI installed and authenticated (gh auth login). A missing or unauthed gh is non-fatal — the project is still created and the response notes the failure.
{# v0.4: when private/hybrid is selected AND globals have at least one configured endpoint, render a dropdown listing every named endpoint so the user can pick which one to use. Mirrors the CLI's endpoint-picker. The selected endpoint name is posted as ``private_endpoint_name``; the server resolves it. #} {# Hint shown only when the user picks private/hybrid AND there is no globally-configured endpoint with a non-empty base_url. The Submit button stays clickable on purpose — the server-side 422 is the source of truth; the hint just saves a round trip. #}
{% endcall %} {% endblock %}