@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.
- package/.dev.vars.example +0 -0
- package/.dockerignore +0 -0
- package/.env.example +0 -0
- package/.gitattributes +0 -0
- package/.nvmrc +0 -0
- package/App.tsx +25 -4
- package/CHANGELOG.md +0 -0
- package/Dockerfile +0 -0
- package/README.md +0 -0
- package/SECURITY.md +0 -0
- package/adsconfig.ts +0 -0
- package/build.gradle.kts +64 -0
- package/bun.lock +0 -0
- package/cobaia.csproj +1 -1
- package/cobaia.gemspec +1 -1
- package/cobaia.java +1 -1
- package/content.ts +0 -0
- package/{acceptableusepolicy.md → docs/acceptableusepolicy.md} +0 -0
- package/{authors.md → docs/authors.md} +0 -0
- package/{bugreport.md → docs/bugreport.md} +0 -0
- package/{cla.md → docs/cla.md} +0 -0
- package/{codeofconduct.md → docs/codeofconduct.md} +0 -0
- package/{contributing.md → docs/contributing.md} +0 -0
- package/{copyright.md → docs/copyright.md} +0 -0
- package/{disclaimer.md → docs/disclaimer.md} +0 -0
- package/{eula.md → docs/eula.md} +0 -0
- package/{exportcontrol.md → docs/exportcontrol.md} +0 -0
- package/docs/features.md +0 -0
- package/{governance.md → docs/governance.md} +0 -0
- package/docs/monetization.md +0 -0
- package/{notice.md → docs/notice.md} +0 -0
- package/{privacypolicy.md → docs/privacypolicy.md} +0 -0
- package/{pullrequesttemplate.md → docs/pullrequesttemplate.md} +0 -0
- package/{support.md → docs/support.md} +0 -0
- package/{termsandconditions.md → docs/termsandconditions.md} +0 -0
- package/{termsofuse.md → docs/termsofuse.md} +0 -0
- package/{thirdpartynotices.md → docs/thirdpartynotices.md} +0 -0
- package/{trademarkpolicy.md → docs/trademarkpolicy.md} +0 -0
- package/familyurl.ts +11 -3
- package/labels.ts +0 -0
- package/package.json +1 -1
- package/pnpm-workspace.yaml +0 -0
- package/pnpmboot.package-lock.json +0 -0
- package/pnpmboot.package.json +0 -0
- package/pom.xml +1 -1
- package/roster.ts +0 -0
- package/sandboxmodality.ts +0 -0
- package/sol/intro/intro.tsx +0 -0
- package/sol/wingets/IntroFooter.tsx +0 -0
- package/sol/wingets/IntroPlans.tsx +0 -0
- package/sol/wingets/IntroSplash.tsx +0 -0
- package/sol/wingets/ShellAdsslot.tsx +0 -0
- package/sol/wingets/ShellBrand.tsx +0 -0
- package/sol/wingets/index.ts +0 -0
- package/tauri.conf.json +2 -2
- package/tests/familyurl.test.ts +7 -4
- package/tests/sandboxmodality.test.ts +0 -0
- 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
|
package/build.gradle.kts
ADDED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
package/{cla.md → docs/cla.md}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/{eula.md → docs/eula.md}
RENAMED
|
File without changes
|
|
File without changes
|
package/docs/features.md
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/monetization.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
|
|
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.
|
|
10
|
-
*
|
|
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
|
-
|
|
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.
|
|
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",
|
package/pnpm-workspace.yaml
CHANGED
|
File without changes
|
|
File without changes
|
package/pnpmboot.package.json
CHANGED
|
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.
|
|
15
|
+
<revision>2.0.163</revision>
|
|
16
16
|
</properties>
|
|
17
17
|
<build>
|
|
18
18
|
<resources>
|
package/roster.ts
CHANGED
|
File without changes
|
package/sandboxmodality.ts
CHANGED
|
File without changes
|
package/sol/intro/intro.tsx
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/sol/wingets/index.ts
CHANGED
|
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.
|
|
4
|
+
"version": "2.0.162",
|
|
5
5
|
"identifier": "com.wenathlan.cobaia",
|
|
6
6
|
"build": {
|
|
7
7
|
"beforeDevCommand": "pnpm dev",
|
|
8
|
-
"frontendDist": "
|
|
8
|
+
"frontendDist": "."
|
|
9
9
|
},
|
|
10
10
|
"app": {
|
|
11
11
|
"windows": [
|
package/tests/familyurl.test.ts
CHANGED
|
@@ -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.
|
|
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"), "../
|
|
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
|