release: v0.3.0
Author: Aaron Steven White
Commit
e156aac80acbe4c50964e6fee2be4cb6e1e71a4aParent: f17e474e50
Structural diff unavailable
These commits were pushed via plain git push, so no pre-parsed
schemas are available. Install git-remote-cospan and re-push via panproto:// to
see scope-level changes, breaking change detection, and semantic diffs.
brew install panproto/tap/git-remote-cospan7 files changed +45 -9
@@ -1,5 +1,33 @@
11 # Changelog 22 3+## v0.3.0 4+ 5+### Frontend UX revamp 6+ 7+- Mobile responsive header with hamburger menu (nav links, search, auth hidden on small screens) 8+- Horizontal scroll for tab bars and protocol filters on mobile 9+- Stacked layout for profile pages on small screens 10+- Consistent breadcrumb and tab bar across all repo sub-pages 11+- Consistent empty states with icons and CTAs on all list pages 12+- Fixed followers, following, and stars pages (API response key mapping) 13+- Homogeneous design patterns: consistent spacing, text sizes, card styles, and form layouts across all 31 routes 14+- Error page improvements 15+- Logo integrated into header and favicon (dark mode optimized with light strokes) 16+ 17+### Auth improvements 18+ 19+- Production OAuth with `token_endpoint_auth_method: "none"` for browser client 20+- Root URL added to `redirect_uris` for proper callback handling 21+- `transition:generic` scope for write permissions (create issues, stars, follows) 22+ 23+### Deployment fixes 24+ 25+- Pre-built Docker images on GHCR (no compilation on the server) 26+- Fixed Caddyfile syntax for production reverse proxy 27+- Fixed node container permissions for `/data` volume 28+- Fixed web container missing `@sveltejs/kit` runtime dependency 29+- Rust 1.88+ in Dockerfiles (MSRV for home, time crates) 30+ 331 ## v0.2.0 432 533 ### Tangled interop
@@ -436,7 +436,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
436436 437437 [[package]] 438438 name = "cospan-appview" 439-version = "0.2.3" 439+version = "0.3.0" 440440 dependencies = [ 441441 "anyhow", 442442 "async-trait",
@@ -479,7 +479,7 @@ dependencies = [
479479 480480 [[package]] 481481 name = "cospan-codegen" 482-version = "0.2.3" 482+version = "0.3.0" 483483 dependencies = [ 484484 "anyhow", 485485 "panproto-core",
@@ -493,7 +493,7 @@ dependencies = [
493493 494494 [[package]] 495495 name = "cospan-node" 496-version = "0.2.3" 496+version = "0.3.0" 497497 dependencies = [ 498498 "anyhow", 499499 "async-trait",
@@ -7,7 +7,7 @@ members = [
77 resolver = "2" 88 99 [workspace.package] 10-version = "0.2.4" 10+version = "0.3.0" 1111 edition = "2024" 1212 license = "AGPL-3.0-or-later" 1313 repository = "https://github.com/cospan-dev/cospan"
@@ -40,11 +40,19 @@ export async function listStars(params?: {
4040 return { items: raw.stars ?? [], cursor: raw.cursor ?? null, totalCount: raw.totalCount ?? 0 }; 4141 } 4242 43-export function listFollows(params: { 43+export async function listFollows(params: { 4444 did: string; 4545 direction: 'followers' | 'following'; 4646 limit?: number; 4747 cursor?: string; 4848 }): Promise<FollowListResponse> { 49- return xrpcQuery<FollowListResponse>('dev.cospan.graph.follow.list', params); 49+ const raw = await xrpcQuery<{ follows: Follow[]; cursor: string | null; totalCount: number }>( 50+ 'dev.cospan.graph.follow.list', 51+ params 52+ ); 53+ return { 54+ items: raw.follows ?? (raw as any).items ?? [], 55+ cursor: raw.cursor ?? null, 56+ totalCount: raw.totalCount ?? 0 57+ }; 5058 }
@@ -14,7 +14,7 @@ async function fetchBlueskyProfile(did: string) {
1414 displayName: data.displayName ?? null, 1515 handle: data.handle ?? did, 1616 description: data.description ?? null, 17- avatar: data.avatar ?? null, 17+ avatarUrl: data.avatar ?? null, 1818 followerCount: data.followersCount ?? 0, 1919 followingCount: data.followsCount ?? 0, 2020 repoCount: 0,