@wenathlan/cobaia 2.0.165 → 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.
Files changed (51) hide show
  1. package/.dockerignore +1 -1
  2. package/App.tsx +2 -31
  3. package/Dockerfile +162 -4
  4. package/biome.jsonc +3 -3
  5. package/build.gradle.kts +4 -4
  6. package/bun.lock +1820 -487
  7. package/cobaia.csproj +2 -2
  8. package/cobaia.gemspec +2 -2
  9. package/cobaia.java +2 -2
  10. package/db.ts +87 -3
  11. package/docker-compose.yml +58 -0
  12. package/docker.config +74 -0
  13. package/docs/cobaia.md +31 -0
  14. package/docs/distributionlanes.md +1 -1
  15. package/keywords.txt +1 -0
  16. package/labels.ts +23 -1
  17. package/monetization.ts +248 -0
  18. package/nginx.conf +106 -0
  19. package/onboardingstate.ts +211 -0
  20. package/package.json +430 -83
  21. package/pnpm-workspace.yaml +60 -38
  22. package/pom.xml +4 -4
  23. package/routerbase.ts +1 -0
  24. package/schema.prisma +23 -0
  25. package/sol/Sol.tsx +20 -15
  26. package/sol/apps/apps.tsx +1 -1
  27. package/sol/blog/blog.tsx +1 -1
  28. package/sol/home/home.tsx +14 -4
  29. package/sol/intro/intro.tsx +13 -5
  30. package/sol/onboarding/onboarding.tsx +146 -0
  31. package/sol/pricing/pricing.tsx +1 -1
  32. package/sol/shell/Shell.tsx +1 -1
  33. package/sol/sol.css +153 -0
  34. package/sol/support/support.tsx +1 -1
  35. package/sol/wingets/HomeEntrygate.tsx +64 -0
  36. package/sol/wingets/IntroFooter.tsx +1 -1
  37. package/sol/wingets/IntroPlans.tsx +1 -1
  38. package/sol/wingets/ShellAdsslot.tsx +1 -1
  39. package/sol/wingets/index.ts +3 -1
  40. package/tauri.conf.json +1 -1
  41. package/{tests → test}/adsconfig.test.ts +2 -2
  42. package/{tests → test}/checkoutlinks.test.ts +2 -2
  43. package/test/entryflow.test.ts +124 -0
  44. package/{tests → test}/familyurl.test.ts +1 -1
  45. package/{tests → test}/posts.test.ts +2 -2
  46. package/{tests → test}/sandboxmodality.test.ts +1 -1
  47. package/vitest.config.ts +1 -1
  48. package/adsconfig.ts +0 -59
  49. package/checkoutlinks.ts +0 -80
  50. package/posts.ts +0 -54
  51. package/roster.ts +0 -29
package/posts.ts DELETED
@@ -1,54 +0,0 @@
1
- /**
2
- * posts.ts — the typed accessor of the seed blog: the thin door the blog
3
- * page and the tests import, answering the posts of the content lane
4
- * (content.ts — the manifest; db.ts — the content_rows table; the platform
5
- * gateway — GET /api/v1/ui/content). The data never lives here anymore:
6
- * posts() answers the live rows the platform served, the manifest seed
7
- * otherwise (the uistore chain), the index sort and the honest word count
8
- * stay exactly where they rode, and the blog index (/blog) renders the
9
- * sorted index and the full bodies through this door — real, written
10
- * content about how the family is built, so the site is useful on its own
11
- * merits (the ad networks approve content, not containers). New posts
12
- * append to the manifest; the index sorts by date, so the manifest order
13
- * never matters.
14
- */
15
-
16
- import { type blogpost, contenttable, seedPosts } from "./content.ts";
17
-
18
- export type { blogpost };
19
-
20
- /**
21
- * The typed accessor of the blog: the live db rows when the platform
22
- * answered, the manifest seed otherwise.
23
- *
24
- * @returns the posts of the blog.
25
- */
26
- export function posts(): readonly blogpost[] {
27
- return contenttable("posts", seedPosts);
28
- }
29
-
30
- /**
31
- * Builds the blog index: the posts sorted by date, newest first. The ISO
32
- * date sort is lexicographic and stable, so the index order never depends
33
- * on the row order the store answers.
34
- *
35
- * @returns the posts of the blog, newest first.
36
- */
37
- export function postindex(): readonly blogpost[] {
38
- return [...posts()].sort((a, b) => {
39
- if (a.date < b.date) return 1;
40
- if (a.date > b.date) return -1;
41
- return 0;
42
- });
43
- }
44
-
45
- /**
46
- * Counts the words of one post's body — the honest length measure the tests
47
- * and the page footer can both read.
48
- *
49
- * @param post the post to measure.
50
- * @returns the total word count across the body paragraphs.
51
- */
52
- export function postwords(post: blogpost): number {
53
- return post.body.join(" ").split(/\s+/).filter(Boolean).length;
54
- }
package/roster.ts DELETED
@@ -1,29 +0,0 @@
1
- /**
2
- * roster.ts — the typed accessor of the family directory data: the thin
3
- * door the /apps page, the shell footer, the home preview and the intro
4
- * footer import, answering the roster of the content lane (content.ts —
5
- * the manifest; db.ts — the content_rows table; the platform gateway — GET
6
- * /api/v1/ui/content). The data never lives here anymore: roster() answers
7
- * the live rows the platform served, the manifest seed otherwise (the
8
- * uistore chain). Every deploy unit beside the cobaia, with the one accent
9
- * each carries (the spec §12 table, mirrored from the argan contract; the
10
- * devthink OS rides the family sun) and the honest role each app declares
11
- * in its own devthink.toml — condensed to one line, nothing embellished:
12
- * the page and the tests read the same table through this door, so the
13
- * directory can never drift from the family.
14
- */
15
-
16
- import { contenttable, type familymember, seedRoster } from "./content.ts";
17
-
18
- export type { familymember };
19
-
20
- /**
21
- * The typed accessor of the directory: the live db rows when the platform
22
- * answered, the manifest seed otherwise — rail order, the OS first, then
23
- * the applications.
24
- *
25
- * @returns the directory roster.
26
- */
27
- export function roster(): readonly familymember[] {
28
- return contenttable("roster", seedRoster);
29
- }