codehost 0.20.2 → 0.20.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [0.20.4](https://github.com/snomiao/codehost/compare/v0.20.3...v0.20.4) (2026-06-12)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **web:** a root card with many checkouts spans the full grid row so its links actually flow into columns ([21d65ff](https://github.com/snomiao/codehost/commit/21d65ff18a8e266a32b6e314f0de03d26cc97c4c))
7
+
8
+ ## [0.20.3](https://github.com/snomiao/codehost/compare/v0.20.2...v0.20.3) (2026-06-12)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **web:** stop wasting wide screens — workspace cards and checkout links flow into grid columns ([3e4b41c](https://github.com/snomiao/codehost/commit/3e4b41c70f111aeff015ba1e50ae687e98d9d5eb))
14
+
1
15
  ## [0.20.2](https://github.com/snomiao/codehost/compare/v0.20.1...v0.20.2) (2026-06-11)
2
16
 
3
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codehost",
3
- "version": "0.20.2",
3
+ "version": "0.20.4",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -862,6 +862,9 @@ export function Discovery() {
862
862
  </header>
863
863
 
864
864
  <main style={styles.main}>
865
+ {/* Inputs stay at a readable measure; the workspace grid below uses
866
+ the full width. */}
867
+ <div style={styles.controls}>
865
868
  {resolving && (
866
869
  <p style={{ color: "#dcb67a", marginBottom: 12 }}>
867
870
  Looking for <code style={styles.code}>{resolving}</code> in your rooms…{" "}
@@ -963,6 +966,7 @@ export function Discovery() {
963
966
  {ghError && <p style={styles.tokenError}>{ghError}</p>}
964
967
  </>
965
968
  )}
969
+ </div>
966
970
 
967
971
  <div style={styles.listHead}>
968
972
  <h2 style={styles.h2}>Workspaces</h2>
@@ -1040,8 +1044,11 @@ export function Discovery() {
1040
1044
  <ul style={styles.list}>
1041
1045
  {g.items.map(({ server: s, room, name, tags }) => {
1042
1046
  const isActive = s.peerId === activePeerId;
1047
+ // A root daemon listing many checkouts gets the whole row,
1048
+ // so its links can flow into columns.
1049
+ const wide = (s.meta?.workspaces?.length ?? 0) > 3;
1043
1050
  return (
1044
- <li key={s.peerId} style={styles.card}>
1051
+ <li key={s.peerId} style={{ ...styles.card, ...(wide ? { gridColumn: "1 / -1" } : {}) }}>
1045
1052
  <div style={styles.cardMain}>
1046
1053
  <div style={styles.cardName}>{name}</div>
1047
1054
  <div style={styles.tagRow}>
@@ -1106,7 +1113,11 @@ const styles: Record<string, React.CSSProperties> = {
1106
1113
  brand: { fontFamily: "monospace", fontWeight: 700, color: "#fff" },
1107
1114
  dim: { color: "#888", fontSize: 12 },
1108
1115
  status: { fontSize: 12 },
1109
- main: { flex: 1, overflow: "auto", padding: "20px 24px", maxWidth: 760, width: "100%", margin: "0 auto", boxSizing: "border-box" },
1116
+ // Wide cap + per-host card GRID below: a 4K monitor gets several columns of
1117
+ // workspaces instead of one skinny 760px strip. Inputs keep a readable
1118
+ // measure via `controls`.
1119
+ main: { flex: 1, overflow: "auto", padding: "20px 24px", maxWidth: 1560, width: "100%", margin: "0 auto", boxSizing: "border-box" },
1120
+ controls: { maxWidth: 760 },
1110
1121
  tokenForm: { display: "flex", alignItems: "center", gap: 8, marginBottom: 8 },
1111
1122
  tokenHint: { margin: "0 0 20px", fontSize: 12, color: "#888" },
1112
1123
  tokenError: { margin: "0 0 20px", fontSize: 12, color: "#f48771" },
@@ -1138,13 +1149,22 @@ const styles: Record<string, React.CSSProperties> = {
1138
1149
  border: "1px solid #3d3d3d", background: "transparent", color: "#9aa4af", cursor: "pointer",
1139
1150
  },
1140
1151
  idLine: { fontFamily: "monospace", fontSize: 11, color: "#666", marginTop: 6 },
1141
- wsRow: { display: "flex", flexDirection: "column", alignItems: "flex-start", gap: 3, marginTop: 8 },
1152
+ // Workspace links flow into columns on wide screens (a busy root daemon can
1153
+ // advertise 50+ checkouts — a single column wasted the whole viewport).
1154
+ wsRow: {
1155
+ display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(280px, 1fr))",
1156
+ gap: "2px 14px", marginTop: 8,
1157
+ },
1142
1158
  wsLink: {
1143
1159
  fontFamily: "monospace", fontSize: 12, padding: "2px 0", border: "none", background: "transparent",
1144
1160
  color: "#75beff", cursor: "pointer", textAlign: "left",
1145
1161
  },
1146
1162
  code: { background: "#252525", padding: "2px 6px", borderRadius: 4, fontFamily: "monospace", fontSize: 12 },
1147
- list: { listStyle: "none", margin: "0 0 14px", padding: 0, display: "flex", flexDirection: "column", gap: 8 },
1163
+ list: {
1164
+ listStyle: "none", margin: "0 0 14px", padding: 0,
1165
+ display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(360px, 1fr))", gap: 8,
1166
+ alignItems: "start",
1167
+ },
1148
1168
  hostHead: { display: "flex", alignItems: "baseline", gap: 10, margin: "0 0 8px" },
1149
1169
  hostName: { fontSize: 13, fontWeight: 600, color: "#dcdcaa", fontFamily: "monospace" },
1150
1170
  agentRow: { display: "flex", flexWrap: "wrap", gap: 6, margin: "0 0 8px" },