@wenathlan/cobaia 2.0.162 → 2.0.163

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.
Files changed (58) hide show
  1. package/.dev.vars.example +0 -0
  2. package/.dockerignore +0 -0
  3. package/.env.example +0 -0
  4. package/.gitattributes +0 -0
  5. package/.nvmrc +0 -0
  6. package/App.tsx +25 -4
  7. package/CHANGELOG.md +0 -0
  8. package/Dockerfile +0 -0
  9. package/README.md +0 -0
  10. package/SECURITY.md +0 -0
  11. package/adsconfig.ts +0 -0
  12. package/build.gradle.kts +64 -0
  13. package/bun.lock +0 -0
  14. package/cobaia.csproj +1 -1
  15. package/cobaia.gemspec +1 -1
  16. package/cobaia.java +1 -1
  17. package/content.ts +0 -0
  18. package/{acceptableusepolicy.md → docs/acceptableusepolicy.md} +0 -0
  19. package/{authors.md → docs/authors.md} +0 -0
  20. package/{bugreport.md → docs/bugreport.md} +0 -0
  21. package/{cla.md → docs/cla.md} +0 -0
  22. package/{codeofconduct.md → docs/codeofconduct.md} +0 -0
  23. package/{contributing.md → docs/contributing.md} +0 -0
  24. package/{copyright.md → docs/copyright.md} +0 -0
  25. package/{disclaimer.md → docs/disclaimer.md} +0 -0
  26. package/{eula.md → docs/eula.md} +0 -0
  27. package/{exportcontrol.md → docs/exportcontrol.md} +0 -0
  28. package/docs/features.md +0 -0
  29. package/{governance.md → docs/governance.md} +0 -0
  30. package/docs/monetization.md +0 -0
  31. package/{notice.md → docs/notice.md} +0 -0
  32. package/{privacypolicy.md → docs/privacypolicy.md} +0 -0
  33. package/{pullrequesttemplate.md → docs/pullrequesttemplate.md} +0 -0
  34. package/{support.md → docs/support.md} +0 -0
  35. package/{termsandconditions.md → docs/termsandconditions.md} +0 -0
  36. package/{termsofuse.md → docs/termsofuse.md} +0 -0
  37. package/{thirdpartynotices.md → docs/thirdpartynotices.md} +0 -0
  38. package/{trademarkpolicy.md → docs/trademarkpolicy.md} +0 -0
  39. package/familyurl.ts +11 -3
  40. package/labels.ts +0 -0
  41. package/package.json +1 -1
  42. package/pnpm-workspace.yaml +0 -0
  43. package/pnpmboot.package-lock.json +0 -0
  44. package/pnpmboot.package.json +0 -0
  45. package/pom.xml +1 -1
  46. package/roster.ts +0 -0
  47. package/sandboxmodality.ts +0 -0
  48. package/sol/intro/intro.tsx +0 -0
  49. package/sol/wingets/IntroFooter.tsx +0 -0
  50. package/sol/wingets/IntroPlans.tsx +0 -0
  51. package/sol/wingets/IntroSplash.tsx +0 -0
  52. package/sol/wingets/ShellAdsslot.tsx +0 -0
  53. package/sol/wingets/ShellBrand.tsx +0 -0
  54. package/sol/wingets/index.ts +0 -0
  55. package/tauri.conf.json +2 -2
  56. package/tests/familyurl.test.ts +7 -4
  57. package/tests/sandboxmodality.test.ts +0 -0
  58. package/vitest.config.ts +0 -0
package/.dev.vars.example CHANGED
File without changes
package/.dockerignore CHANGED
File without changes
package/.env.example CHANGED
File without changes
package/.gitattributes CHANGED
File without changes
package/.nvmrc CHANGED
File without changes
package/App.tsx CHANGED
@@ -29,13 +29,34 @@ import { seedLabels } from "./labels";
29
29
  // renders — best effort, the manifest always answers the wingets.
30
30
  if (typeof window !== "undefined") void seedLabels().catch(() => {});
31
31
 
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
+
32
43
  function routerBase(): string {
33
- // the base rides the BUILD declaration only (the sibling grammar): the
34
- // pages subpath owns /devthink/cobaia/, and that declaration arrives
35
- // through the vite base — deriving it from the runtime path made every
36
- // deep link look like a deployment subfolder
37
44
  const declaredBase = import.meta.env.BASE_URL;
45
+ // the build-time base wins (the pages workflow mounts every app at /<slug>/)
38
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
+ }
39
60
  return "";
40
61
  }
41
62
 
package/CHANGELOG.md CHANGED
File without changes
package/Dockerfile CHANGED
File without changes
package/README.md CHANGED
File without changes
package/SECURITY.md CHANGED
File without changes
package/adsconfig.ts CHANGED
File without changes
@@ -0,0 +1,64 @@
1
+ // The cobaia gradle distribution module (the gradleseat wave): the
2
+ // documentation envelope the maven lane ships as the io.github.wenathlan
3
+ // artifact rides the gradle rung under the com.wenathlan coordinates —
4
+ // the maven-publish plugin renders the module metadata
5
+ // (cobaia-<version>.module) beside the pom and the jar, so the gradle
6
+ // consumer resolves the same documentation set the maven consumer
7
+ // downloads from the same GitHub Packages registry without ever
8
+ // colliding with the io.github.wenathlan versions the maven lane owns.
9
+ // The releaseVersion property answers the lane override the way the pom
10
+ // revision property does, and the default reads the envelope package.json
11
+ // the metadata lockstep stamps — the module file carries no version
12
+ // literal the rung ladder would have to carry too.
13
+ plugins {
14
+ `java`
15
+ `maven-publish`
16
+ }
17
+
18
+ group = "com.wenathlan"
19
+
20
+ val envelopeVersion = file("package.json").readText()
21
+ .let { Regex("\"version\"\\s*:\\s*\"([^\"]+)\"").find(it)?.groupValues?.get(1) }
22
+ ?: error("the cobaia envelope package.json carries no version")
23
+ version = (findProperty("releaseVersion") as String?) ?: envelopeVersion
24
+
25
+ tasks.jar {
26
+ from(layout.projectDirectory) {
27
+ include("README.md")
28
+ include("docs/**")
29
+ include("tests/**")
30
+ }
31
+ }
32
+
33
+ publishing {
34
+ repositories {
35
+ maven {
36
+ name = "GitHubPackages"
37
+ url = uri("https://maven.pkg.github.com/wenathlan/devthink")
38
+ credentials {
39
+ username = System.getenv("GITHUB_ACTOR") ?: ""
40
+ password = System.getenv("GITHUB_TOKEN") ?: ""
41
+ }
42
+ }
43
+ }
44
+ publications {
45
+ create<MavenPublication>("maven") {
46
+ from(components["java"])
47
+ pom {
48
+ name.set("cobaia single distribution")
49
+ description.set("The single cobaia gradle distribution: the documentation set and the tests directory embedded as jar resources in the one com.wenathlan.cobaia artifact. cobaia is the monetization surface — the plans, the support rails and the honest advertisement slots.")
50
+ url.set("https://github.com/wenathlan/devthink")
51
+ licenses {
52
+ license {
53
+ name.set("GPL-3.0-only")
54
+ url.set("https://www.gnu.org/licenses/gpl-3.0.html")
55
+ }
56
+ }
57
+ scm {
58
+ url.set("https://github.com/wenathlan/devthink")
59
+ connection.set("scm:git:https://github.com/wenathlan/devthink.git")
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
package/bun.lock CHANGED
File without changes
package/cobaia.csproj CHANGED
@@ -4,7 +4,7 @@
4
4
  <AssemblyName>cobaia</AssemblyName>
5
5
  <RootNamespace>cobaia</RootNamespace>
6
6
  <PackageId>cobaia</PackageId>
7
- <Version>2.0.162</Version>
7
+ <Version>2.0.163</Version>
8
8
  <Authors>wenathlan</Authors>
9
9
  <Description>Distribution package containing the cobaia documentation set and the tests directory. cobaia is the monetization surface — the plans, the support rails and the honest advertisement slots.</Description>
10
10
  <PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression>
package/cobaia.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "cobaia"
3
- spec.version = ENV.fetch("COBAIA_VERSION", "2.0.162")
3
+ spec.version = ENV.fetch("COBAIA_VERSION", "2.0.163")
4
4
  spec.authors = ["wenathlan"]
5
5
  spec.email = ["support@users.noreply.github.com"]
6
6
  spec.summary = "The cobaia documentation and tests envelope (the monetization surface — the plans, the support rails and the honest advertisement slots)."
package/cobaia.java CHANGED
@@ -10,7 +10,7 @@ package io.github.wenathlan.cobaia;
10
10
  */
11
11
  final class Cobaia {
12
12
  /** The version of the cobaia envelope (the six-distribution completeness wave). */
13
- public static final String VERSION = "2.0.162";
13
+ public static final String VERSION = "2.0.163";
14
14
  private Cobaia() {
15
15
  }
16
16
  }
package/content.ts CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/docs/features.md CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/familyurl.ts CHANGED
@@ -6,8 +6,11 @@
6
6
  * sit beside this one as sibling folders on the shared origin, so the url
7
7
  * resolves one level above this application (../slug/), with the slug
8
8
  * trimmed of any slashes so both bare names and pasted segments resolve to
9
- * the same address. Pure and side-effect free: the helper only shapes
10
- * strings.
9
+ * the same address. The DevThink OS itself answers at the family root of
10
+ * the host (the pages site root — the real deploy of the os), never one
11
+ * segment deep, so the devthink slug resolves to the root while every
12
+ * other slug resolves to the sibling folder beside this one. Pure and
13
+ * side-effect free: the helper only shapes strings.
11
14
  */
12
15
 
13
16
  /**
@@ -18,5 +21,10 @@
18
21
  * deploy unit, always carrying the trailing slash.
19
22
  */
20
23
  export function familyurl(slug: string): string {
21
- return `../${slug.replace(/^\/+|\/+$/g, "")}/`;
24
+ const clean = slug.replace(/^\/+|\/+$/g, "");
25
+ // the os answers at the family root itself: the devthink slug resolves to
26
+ // the root (the real deploy of the os), every other slug to the sibling
27
+ // folder one level up from this deploy unit
28
+ if (clean === "devthink") return "../";
29
+ return `../${clean}/`;
22
30
  }
package/labels.ts CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wenathlan/cobaia",
3
- "version": "2.0.162",
3
+ "version": "2.0.163",
4
4
  "description": "cobaia is the monetization surface of the wenathlan family: the content site that carries the plans, the support rails and the honest advertisement slots while the family apps stay clean; the name is provisional until the owner picks the official one",
5
5
  "repository": {
6
6
  "type": "git",
File without changes
File without changes
File without changes
package/pom.xml CHANGED
@@ -12,7 +12,7 @@
12
12
  <scm><url>https://github.com/wenathlan/devthink</url><connection>scm:git:https://github.com/wenathlan/devthink.git</connection></scm>
13
13
  <distributionManagement><repository><id>github</id><name>GitHub Packages</name><url>https://maven.pkg.github.com/wenathlan/devthink</url></repository></distributionManagement>
14
14
  <properties>
15
- <revision>2.0.162</revision>
15
+ <revision>2.0.163</revision>
16
16
  </properties>
17
17
  <build>
18
18
  <resources>
package/roster.ts CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/tauri.conf.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "$schema": "https://schema.tauri.app/config/2",
3
3
  "productName": "Cobaia",
4
- "version": "2.0.160",
4
+ "version": "2.0.162",
5
5
  "identifier": "com.wenathlan.cobaia",
6
6
  "build": {
7
7
  "beforeDevCommand": "pnpm dev",
8
- "frontendDist": "build/web"
8
+ "frontendDist": "."
9
9
  },
10
10
  "app": {
11
11
  "windows": [
@@ -3,7 +3,10 @@
3
3
  // The suite watches the promise the directory and the footer make: every
4
4
  // family member resolves one level above this application, always with the
5
5
  // trailing slash, and pasted segments or stray slashes land on the same
6
- // address. Pure string shaping — no network, no side effects.
6
+ // address. The os itself answers at the family root of the host (the pages
7
+ // site root), so the devthink slug resolves to the root — never to a
8
+ // "../devthink/" path no deploy carries. Pure string shaping — no network,
9
+ // no side effects.
7
10
  import assert from "node:assert/strict";
8
11
  import { describe, it } from "vitest";
9
12
  import { familyurl } from "../familyurl.ts";
@@ -11,7 +14,7 @@ import { familyurl } from "../familyurl.ts";
11
14
  describe("the familyurl contract", () => {
12
15
  it("resolves a bare slug one level above, with the trailing slash", () => {
13
16
  assert.equal(familyurl("vault"), "../vault/");
14
- assert.equal(familyurl("devthink"), "../devthink/");
17
+ assert.equal(familyurl("devthink"), "../");
15
18
  });
16
19
 
17
20
  it("trims stray slashes from pasted segments", () => {
@@ -20,7 +23,7 @@ describe("the familyurl contract", () => {
20
23
  assert.equal(familyurl("/forge"), "../forge/");
21
24
  });
22
25
 
23
- it("resolves the whole roster the same way", () => {
26
+ it("resolves the whole roster the same way — the os at the family root, every application at its own segment", () => {
24
27
  const roster = [
25
28
  "devthink",
26
29
  "saddle",
@@ -34,7 +37,7 @@ describe("the familyurl contract", () => {
34
37
  "argan",
35
38
  ];
36
39
  for (const slug of roster) {
37
- assert.equal(familyurl(slug), `../${slug}/`);
40
+ assert.equal(familyurl(slug), slug === "devthink" ? "../" : `../${slug}/`);
38
41
  }
39
42
  });
40
43
  });
File without changes
package/vitest.config.ts CHANGED
File without changes