Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0:2222/vole.git

A free and open-source forge that lives in your Git repo.

Restore the home header and put the introduction in the list column

164ad9f58199497f55bd6ae5a6ab8bca27618d9d · Keenan Nemetz · 1d ago · parent ff9870f1

Restore the home header and put the introduction in the list column

Bring back the identity strip with the New repository button in it; the section heading goes back to just the list title and clear-search link. Move the introduction inside the repository column above the grid, so it is as wide as the work and the activity rail stays beside it. With no repositories there is no column, so the introduction stays full width above the empty state.

server/web/static/vole.css +29−6

@@ -2729,10 +2729,32 @@ textarea:focus-visible {
2729 2729
2730 2730 /* ---------- landing page ---------- */
2731 2731
2732 /* The introduction, the repository grid and the merged feed as a rail. The feed
2733 has a full page at /activity; here it is a sign the forge is alive, not the
2734 subject of the page. The introduction is the instance's own prose, read from
2735 the instance repository, so it has no header or editor of its own. */
2732 /* The identity strip, the introduction, the repository grid and the merged feed
2733 as a rail. The feed has a full page at /activity; here it is a sign the forge
2734 is alive, not the subject of the page. */
2735 .hero {
2736 display: flex;
2737 align-items: flex-end;
2738 justify-content: space-between;
2739 gap: 24px;
2740 padding: 26px 0 20px;
2741 border-bottom: 1px solid var(--border);
2742 margin-bottom: 20px;
2743 }
2744 .hero-main { min-width: 0; }
2745 .hero h1 {
2746 font-size: calc(28.6px * var(--font-scale));
2747 line-height: 1.2;
2748 letter-spacing: -0.025em;
2749 margin: 0;
2750 overflow: hidden;
2751 text-overflow: ellipsis;
2752 white-space: nowrap;
2753 }
2754 .hero-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; align-items: center; gap: 8px; }
2755
2756 /* The introduction sits in the repository column, above the list, so it is as
2757 wide as the work rather than as wide as the page. */
2736 2758 .readme-card { margin: 0 0 20px; }
2737 2759 .readme-body { padding: 18px 20px; }
2738 2760 .readme-empty {
@@ -2762,8 +2784,6 @@ textarea:focus-visible {
2762 2784 .section-head .more { font-size: calc(12.65px * var(--font-scale)); color: var(--fg-muted); }
2763 2785 .section-head .more:hover { color: var(--accent); }
2764 2786 .section-head .muted { font-size: calc(12.65px * var(--font-scale)); }
2765 .section-actions { display: flex; align-items: center; gap: 12px; }
2766 .section-actions .button { font-size: calc(12.65px * var(--font-scale)); padding: 4px 10px; }
2767 2787
2768 2788 .repo-grid {
2769 2789 display: grid;
@@ -2835,6 +2855,9 @@ textarea:focus-visible {
2835 2855 .home-main { order: 1; }
2836 2856 }
2837 2857 @media (max-width: 720px) {
2858 .hero { flex-wrap: wrap; align-items: flex-start; padding-top: 18px; }
2859 .hero-actions { width: 100%; }
2860 .hero h1 { font-size: calc(24.2px * var(--font-scale)); }
2838 2861 .repo-grid { grid-template-columns: 1fr; }
2839 2862 }
2840 2863