@wenathlan/cobaia 2.0.166 → 2.0.167

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/.dockerignore CHANGED
@@ -38,4 +38,4 @@ staging
38
38
  __pycache__
39
39
  *.pyc
40
40
  *.pyo
41
- tests/tmp
41
+ test/tmp
package/App.tsx CHANGED
@@ -24,45 +24,16 @@ import "@fontsource-variable/inter";
24
24
  import "./sol/sol.css";
25
25
  import { seedLabels } from "./labels";
26
26
 
27
+ import { routerBase } from "./routerbase.ts";
27
28
  // the copy law rides the boot: the seed refreshes the label store rows from
28
29
  // the manifest (the browser cache mirrors the site db rows) before the theme
29
30
  // renders — best effort, the manifest always answers the wingets.
30
31
  if (typeof window !== "undefined") void seedLabels().catch(() => {});
31
32
 
32
- /** the route segments the theme answers to — the mount prefix of a deploy
33
- * unit is whatever precedes the first one of these in the boot path. */
34
- const KNOWN_ROUTES: readonly string[] = [
35
- "/intro",
36
- "/apps",
37
- "/pricing",
38
- "/support",
39
- "/blog",
40
- "/legal",
41
- ];
42
-
43
- function routerBase(): string {
44
- const declaredBase = import.meta.env.BASE_URL;
45
- // the build-time base wins (the pages workflow mounts every app at /<slug>/)
46
- if (declaredBase !== "/" && declaredBase !== "./") return declaredBase.replace(/\/$/, "");
47
- const path = window.location.pathname.replace(/index\.html$/, "");
48
- // a known route at the root means the app is mounted at "/" — no base
49
- if (KNOWN_ROUTES.some((route) => path === route || path.startsWith(`${route}/`))) return "";
50
- // a lone first segment that is no known route is a mount prefix (the
51
- // power clip and the family stage serve this app under its slug)
52
- const segments = path.replace(/^\/+|\/+$/g, "").split("/").filter(Boolean);
53
- if (segments.length === 1) return `/${segments[0]}`;
54
- // otherwise the mount prefix is whatever precedes the first known segment
55
- // (the static hosting case: the deep link still lands on its page)
56
- for (const route of KNOWN_ROUTES) {
57
- const at = path.indexOf(route);
58
- if (at > 0) return path.slice(0, at).replace(/\/$/, "");
59
- }
60
- return "";
61
- }
62
33
 
63
34
  function App() {
64
35
  return (
65
- <WouterRouter base={routerBase()}>
36
+ <WouterRouter base={routerBase("cobaia")}>
66
37
  <Sol />
67
38
  </WouterRouter>
68
39
  );
package/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- # cobaia 2.0.166 — THE SITE CONTAINER FILE
1
+ # cobaia 2.0.167 — THE SITE CONTAINER FILE
2
2
  #
3
3
  # The family container doctrine in the sol shape: one versioned static
4
4
  # container per site. The sol theme builds inside the container — stage one
@@ -14,7 +14,7 @@
14
14
  # the nginx base the multi-arch lane carries).
15
15
  FROM --platform=$BUILDPLATFORM node:26-alpine@sha256:40cd011b55415bc894e45b02fdd5a5dfde056921b7d23a64c74f80497af48797 AS solbuild
16
16
 
17
- ARG COBAIA_VERSION=2.0.166
17
+ ARG COBAIA_VERSION=2.0.167
18
18
 
19
19
  # The family context fix (the staged shape the site containers read): the
20
20
  # application rides the context nested under app/ with the sibling sources
@@ -32,9 +32,163 @@ COPY app/ .
32
32
  COPY vault/ /src/vault/
33
33
  RUN pnpm build
34
34
 
35
+ # ════════════════════════════════════════════════════════════════════
36
+ # THE OS-DISTRIBUTION CATALOG LANES (the container-lane law, the family
37
+ # half): the thirteen os-distribution seats the saddle osprofiles catalog
38
+ # answers ride the cobaia container the same law the saddle engine answers
39
+ # — every profile with no runnable container base ships as an honest
40
+ # catalog lane, a scratch-based image whose config carries the profile
41
+ # row the saddle catalog renders at build time (the import law: the json
42
+ # the stages COPY renders from saddle/osprofiles.ts, the catalog never
43
+ # duplicates here — cobaia imports the engine catalog the saddle owns).
44
+ # the catalog lanes ride before the runtime stage so the default build keeps answering the runtime target (the family builds never pass --target — the saddle lanes always do, the os seats close the saddle file the same law).
45
+ # ════════════════════════════════════════════════════════════════════
46
+ FROM scratch AS osgrapheneos
47
+ ARG COBAIA_VERSION=2.0.167
48
+ ARG COBAIA_OS_PROFILE="grapheneos"
49
+ ENV COBAIA_OS_PROFILE=grapheneos
50
+ LABEL org.opencontainers.image.title="cobaia (the grapheneos os-distribution catalog lane)" \
51
+ org.opencontainers.image.description="the grapheneos os-distribution seat as a catalog lane of the cobaia container: a privacy and security hardened version of android — no runnable container base exists for an android firmware seat, the lane publishes the profile config the engine reads." \
52
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
53
+ org.opencontainers.image.licenses="GPL-3.0-only" \
54
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
55
+ COPY osprofiles/grapheneos.json /cobaia/osprofile.json
56
+
57
+ FROM scratch AS osmaruos
58
+ ARG COBAIA_VERSION=2.0.167
59
+ ARG COBAIA_OS_PROFILE="maruos"
60
+ ENV COBAIA_OS_PROFILE=maruos
61
+ LABEL org.opencontainers.image.title="cobaia (the maruos os-distribution catalog lane)" \
62
+ org.opencontainers.image.description="the maruos os-distribution seat as a catalog lane of the cobaia container: maru os is firmware, not an application: the android firmware seat with the debian desktop — no runnable container base exists for a firmware seat, the lane publishes the profile config the engine reads." \
63
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
64
+ org.opencontainers.image.licenses="GPL-3.0-only" \
65
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
66
+ COPY osprofiles/maruos.json /cobaia/osprofile.json
67
+
68
+ FROM scratch AS osv
69
+ ARG COBAIA_VERSION=2.0.167
70
+ ARG COBAIA_OS_PROFILE="v"
71
+ ENV COBAIA_OS_PROFILE=v
72
+ LABEL org.opencontainers.image.title="cobaia (the v os-distribution catalog lane)" \
73
+ org.opencontainers.image.description="the v os-distribution seat as a catalog lane of the cobaia container: the v language platform target (vlang): the language engine seat, never a guest distribution — no runnable container base exists for the languageos seat, the lane publishes the profile config the engine reads." \
74
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
75
+ org.opencontainers.image.licenses="GPL-3.0-only" \
76
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
77
+ COPY osprofiles/v.json /cobaia/osprofile.json
78
+
79
+ FROM scratch AS oswindows
80
+ ARG COBAIA_VERSION=2.0.167
81
+ ARG COBAIA_OS_PROFILE="windows"
82
+ ENV COBAIA_OS_PROFILE=windows
83
+ LABEL org.opencontainers.image.title="cobaia (the windows os-distribution catalog lane)" \
84
+ org.opencontainers.image.description="the windows os-distribution seat as a catalog lane of the cobaia container: the windows guest vocabulary the exe seats execute — no runnable container base exists for the windows seat the engine hosts as a guest, the lane publishes the profile config the engine reads." \
85
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
86
+ org.opencontainers.image.licenses="GPL-3.0-only" \
87
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
88
+ COPY osprofiles/windows.json /cobaia/osprofile.json
89
+
90
+ FROM scratch AS ospostmarketos
91
+ ARG COBAIA_VERSION=2.0.167
92
+ ARG COBAIA_OS_PROFILE="postmarketos"
93
+ ENV COBAIA_OS_PROFILE=postmarketos
94
+ LABEL org.opencontainers.image.title="cobaia (the postmarketos os-distribution catalog lane)" \
95
+ org.opencontainers.image.description="the postmarketos os-distribution seat as a catalog lane of the cobaia container: the alpine-based mobile distribution — no runnable container base exists for the mobile seat, the lane publishes the profile config the engine reads." \
96
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
97
+ org.opencontainers.image.licenses="GPL-3.0-only" \
98
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
99
+ COPY osprofiles/postmarketos.json /cobaia/osprofile.json
100
+
101
+ FROM scratch AS oslineageos
102
+ ARG COBAIA_VERSION=2.0.167
103
+ ARG COBAIA_OS_PROFILE="lineageos"
104
+ ENV COBAIA_OS_PROFILE=lineageos
105
+ LABEL org.opencontainers.image.title="cobaia (the lineageos os-distribution catalog lane)" \
106
+ org.opencontainers.image.description="the lineageos os-distribution seat as a catalog lane of the cobaia container: the android community distribution — no runnable container base exists for the mobile seat, the lane publishes the profile config the engine reads." \
107
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
108
+ org.opencontainers.image.licenses="GPL-3.0-only" \
109
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
110
+ COPY osprofiles/lineageos.json /cobaia/osprofile.json
111
+
112
+ FROM scratch AS oscalyxos
113
+ ARG COBAIA_VERSION=2.0.167
114
+ ARG COBAIA_OS_PROFILE="calyxos"
115
+ ENV COBAIA_OS_PROFILE=calyxos
116
+ LABEL org.opencontainers.image.title="cobaia (the calyxos os-distribution catalog lane)" \
117
+ org.opencontainers.image.description="the calyxos os-distribution seat as a catalog lane of the cobaia container: the privacy-focused android distribution, the hardened mobile seat beside grapheneos — no runnable container base exists for the mobile seat, the lane publishes the profile config the engine reads." \
118
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
119
+ org.opencontainers.image.licenses="GPL-3.0-only" \
120
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
121
+ COPY osprofiles/calyxos.json /cobaia/osprofile.json
122
+
123
+ FROM scratch AS osarchlinux
124
+ ARG COBAIA_VERSION=2.0.167
125
+ ARG COBAIA_OS_PROFILE="archlinux"
126
+ ENV COBAIA_OS_PROFILE=archlinux
127
+ LABEL org.opencontainers.image.title="cobaia (the archlinux os-distribution catalog lane)" \
128
+ org.opencontainers.image.description="the archlinux os-distribution seat as a catalog lane of the cobaia container: the rolling-release distribution omarchy builds on, the pacman desktop seat — the lane publishes the profile config the engine reads." \
129
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
130
+ org.opencontainers.image.licenses="GPL-3.0-only" \
131
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
132
+ COPY osprofiles/archlinux.json /cobaia/osprofile.json
133
+
134
+ FROM scratch AS osalpine
135
+ ARG COBAIA_VERSION=2.0.167
136
+ ARG COBAIA_OS_PROFILE="alpine"
137
+ ENV COBAIA_OS_PROFILE=alpine
138
+ LABEL org.opencontainers.image.title="cobaia (the alpine os-distribution catalog lane)" \
139
+ org.opencontainers.image.description="the alpine os-distribution seat as a catalog lane of the cobaia container: the musl-based lightweight distribution, the small-footprint seat the musl legs answer — the lane publishes the profile config the engine reads." \
140
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
141
+ org.opencontainers.image.licenses="GPL-3.0-only" \
142
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
143
+ COPY osprofiles/alpine.json /cobaia/osprofile.json
144
+
145
+ FROM scratch AS osdebian
146
+ ARG COBAIA_VERSION=2.0.167
147
+ ARG COBAIA_OS_PROFILE="debian"
148
+ ENV COBAIA_OS_PROFILE=debian
149
+ LABEL org.opencontainers.image.title="cobaia (the debian os-distribution catalog lane)" \
150
+ org.opencontainers.image.description="the debian os-distribution seat as a catalog lane of the cobaia container: the universal operating system, the apt desktop seat the widest hardware matrix answers — the lane publishes the profile config the engine reads." \
151
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
152
+ org.opencontainers.image.licenses="GPL-3.0-only" \
153
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
154
+ COPY osprofiles/debian.json /cobaia/osprofile.json
155
+
156
+ FROM scratch AS osfedora
157
+ ARG COBAIA_VERSION=2.0.167
158
+ ARG COBAIA_OS_PROFILE="fedora"
159
+ ENV COBAIA_OS_PROFILE=fedora
160
+ LABEL org.opencontainers.image.title="cobaia (the fedora os-distribution catalog lane)" \
161
+ org.opencontainers.image.description="the fedora os-distribution seat as a catalog lane of the cobaia container: the red-hat-upstream community distribution, the rpm desktop seat beside the apt rows — the lane publishes the profile config the engine reads." \
162
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
163
+ org.opencontainers.image.licenses="GPL-3.0-only" \
164
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
165
+ COPY osprofiles/fedora.json /cobaia/osprofile.json
166
+
167
+ FROM scratch AS osnixos
168
+ ARG COBAIA_VERSION=2.0.167
169
+ ARG COBAIA_OS_PROFILE="nixos"
170
+ ENV COBAIA_OS_PROFILE=nixos
171
+ LABEL org.opencontainers.image.title="cobaia (the nixos os-distribution catalog lane)" \
172
+ org.opencontainers.image.description="the nixos os-distribution seat as a catalog lane of the cobaia container: the declarative distribution the nix package manager builds, the reproducible-system seat — the lane publishes the profile config the engine reads." \
173
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
174
+ org.opencontainers.image.licenses="GPL-3.0-only" \
175
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
176
+ COPY osprofiles/nixos.json /cobaia/osprofile.json
177
+
178
+ FROM scratch AS osvoid
179
+ ARG COBAIA_VERSION=2.0.167
180
+ ARG COBAIA_OS_PROFILE="void"
181
+ ENV COBAIA_OS_PROFILE=void
182
+ LABEL org.opencontainers.image.title="cobaia (the void os-distribution catalog lane)" \
183
+ org.opencontainers.image.description="the void os-distribution seat as a catalog lane of the cobaia container: the independent source-rolling distribution, the xbps seat the musl legs answer beside alpine — the lane publishes the profile config the engine reads." \
184
+ org.opencontainers.image.version="${COBAIA_VERSION}" \
185
+ org.opencontainers.image.licenses="GPL-3.0-only" \
186
+ org.opencontainers.image.source="https://github.com/wenathlan/devthink"
187
+ COPY osprofiles/void.json /cobaia/osprofile.json
188
+
35
189
  FROM nginxinc/nginx-unprivileged:1.29-alpine@sha256:0c79d56aee561a1d81c63f00eee5fb5fe29279560cdc55e91425133104c7fbe6
36
190
 
37
- ARG COBAIA_VERSION=2.0.166
191
+ ARG COBAIA_VERSION=2.0.167
38
192
 
39
193
  LABEL org.opencontainers.image.title="cobaia" \
40
194
  org.opencontainers.image.description="cobaia — the monetization surface: the ads, the plans and the conversion, kept apart from the main sites." \
package/biome.jsonc CHANGED
@@ -21,8 +21,8 @@
21
21
  "!**/bun.lock",
22
22
  "!**/*.min.js",
23
23
  "!**/docs",
24
- "!**/tests/tmp",
25
- "!**/tests/code",
24
+ "!**/test/tmp",
25
+ "!**/test/code",
26
26
  "!**/sol/dist",
27
27
  "!**/sol/.vite",
28
28
  "!**/sol/node_modules",
@@ -113,7 +113,7 @@
113
113
  }
114
114
  },
115
115
  {
116
- "includes": ["tests/workflowcheck.ts", "tests/publishlanes.test.ts"],
116
+ "includes": ["test/workflowcheck.ts", "test/publishlanes.test.ts"],
117
117
  "linter": {
118
118
  "rules": {
119
119
  "suspicious": {
package/build.gradle.kts CHANGED
@@ -26,7 +26,7 @@ tasks.jar {
26
26
  from(layout.projectDirectory) {
27
27
  include("README.md")
28
28
  include("docs/**")
29
- include("tests/**")
29
+ include("test/**")
30
30
  }
31
31
  }
32
32