@bongos/core 1.19.85 → 1.19.87
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/.bongos-core.json +15 -10
- package/docs/design/gate-navigation-direction.md +271 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +5 -1
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.87",
|
|
6
|
+
"core_contract": "1.19.87",
|
|
7
|
+
"source_commit": "87978cd9aae6450f9a950000264a6ea3290061a9",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-13T00:58:58.091Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 296,
|
|
13
13
|
"agent_docs_stubbed": 21,
|
|
14
14
|
"functional_verbatim": 1234,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 1551,
|
|
20
|
+
"tree_sha256": "76b44f6926a63b7efc6f1458fa1ddb8be237a801879982bddf6c97628d35762f",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -1354,6 +1354,11 @@
|
|
|
1354
1354
|
"mode": "0000644",
|
|
1355
1355
|
"sha256": "a86af6a923ed70bb8ea0846266f232f31a5fc9709d286362bcd37104d683342b"
|
|
1356
1356
|
},
|
|
1357
|
+
{
|
|
1358
|
+
"path": "docs/design/gate-navigation-direction.md",
|
|
1359
|
+
"mode": "0000644",
|
|
1360
|
+
"sha256": "b56c2394f695b64c567c581203901036222927f6c8e0d49fffceb2365f01e96b"
|
|
1361
|
+
},
|
|
1357
1362
|
{
|
|
1358
1363
|
"path": "docs/design/mocks/component-sheet.html",
|
|
1359
1364
|
"mode": "0000644",
|
|
@@ -4082,12 +4087,12 @@
|
|
|
4082
4087
|
{
|
|
4083
4088
|
"path": "package-lock.json",
|
|
4084
4089
|
"mode": "0000644",
|
|
4085
|
-
"sha256": "
|
|
4090
|
+
"sha256": "b3c0559dd15714741dd52b1493e31d0c58b400f29da9b5af0dd410559e890458"
|
|
4086
4091
|
},
|
|
4087
4092
|
{
|
|
4088
4093
|
"path": "package.json",
|
|
4089
4094
|
"mode": "0000644",
|
|
4090
|
-
"sha256": "
|
|
4095
|
+
"sha256": "c7433c4d5b1fc188cc1660b3ed0cffd2f9d669fc5974f072af2b2816324efc09"
|
|
4091
4096
|
},
|
|
4092
4097
|
{
|
|
4093
4098
|
"path": "public-docs/index.html",
|
|
@@ -5722,7 +5727,7 @@
|
|
|
5722
5727
|
{
|
|
5723
5728
|
"path": "src/module-api.js",
|
|
5724
5729
|
"mode": "0000644",
|
|
5725
|
-
"sha256": "
|
|
5730
|
+
"sha256": "3711343a6ac760f4742b14755a1e40722842fce3f29855804a092fdc72da6bb9"
|
|
5726
5731
|
},
|
|
5727
5732
|
{
|
|
5728
5733
|
"path": "src/module-loader/loader.js",
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# Gate Navigation — Direction
|
|
2
|
+
|
|
3
|
+
> **Task 1002741** (goal 1000059 "Projects surface revamp") · direction decided with the owner 2026-08-13.
|
|
4
|
+
> Owner finding, 2026-08-12, minutes after the task 1002696 redesign went live: *"cloudbongos.com/gate
|
|
5
|
+
> is the landing page and there's no way to get there from the landing page."*
|
|
6
|
+
> Evidence base: the acceptance re-walk (task 1002697) finding **N9**, plus a live trace of every
|
|
7
|
+
> public path on the apex.
|
|
8
|
+
|
|
9
|
+
Scope: how a human arriving at **cloudbongos.com** reaches the owner surfaces — `/projects` and
|
|
10
|
+
`/create`. Covers the gate's entry ritual, a persistent navigation door, sign-in-aware states, and
|
|
11
|
+
whether an owner's own projects get an identity in the sky. Does **not** cover how the sky moves or
|
|
12
|
+
feels — that is goal 1000031 (§7).
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 0. Starting point — what exists today
|
|
17
|
+
|
|
18
|
+
Every claim here was verified live on core 1.19.85 (the version prod serves) or read from
|
|
19
|
+
`origin/main`.
|
|
20
|
+
|
|
21
|
+
### The public navigation map
|
|
22
|
+
|
|
23
|
+
| Path | Live status | Links out to |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| `/` — what a person types | **302 → `/gate/` → 401** | — |
|
|
26
|
+
| `/gate/`, `/world/*` | **401** Caddy `basic_auth` (realm "restricted") | — |
|
|
27
|
+
| `/index.html` | 200, public | only `builders.cloudbongos.com` |
|
|
28
|
+
| `/create` | 200, public | `/projects` |
|
|
29
|
+
| `/projects` | 200, public | `/create` |
|
|
30
|
+
|
|
31
|
+
**Nothing public links into `/create` or `/projects`.** They link only to each other. An owner
|
|
32
|
+
reaches their projects today by typing a URL from memory, via the `sessionStorage`-bound done panel,
|
|
33
|
+
or through a corner pill inside one view of a password-walled gate.
|
|
34
|
+
|
|
35
|
+
There is also a public landing page at `/index.html` that no one can reach by typing the domain —
|
|
36
|
+
the apex redirects straight past it into the walled gate.
|
|
37
|
+
|
|
38
|
+
### The wall
|
|
39
|
+
|
|
40
|
+
`/etc/caddy/Caddyfile` on the live host matches `@gate path / /gate /gate/* /world/*` and applies
|
|
41
|
+
`basic_auth` (user `cloudbongos`), with `X-Robots-Tag: noindex, nofollow` on the whole host.
|
|
42
|
+
`/create` and `/projects` fall through to the unprotected handler. Caddy runs its `redir` **before**
|
|
43
|
+
`basic_auth`, which is why `/` answers 302 unauthenticated and the visitor meets the 401 at `/gate/`
|
|
44
|
+
(the ordering ADR 0152 §:44-46 documents). The app carries its own apex redirect as well —
|
|
45
|
+
`src/platform-server.js:115-121`, conditional only on `isApexHost(req)` and the gate file existing,
|
|
46
|
+
with no session check and no query bypass.
|
|
47
|
+
|
|
48
|
+
**The live Caddyfile is not mirrored in this repo** (`infra/` holds only `box-*.sh`); ADR 0152 gives
|
|
49
|
+
the intended shape as prose and marks the lock *"optional pre-launch"*, and several references to
|
|
50
|
+
`infra/Caddyfile` elsewhere in the tree are dead. Treat the host config as the source of truth.
|
|
51
|
+
|
|
52
|
+
**Owner's call (2026-08-13): the wall is temporary and comes off at launch** — so this direction
|
|
53
|
+
designs the gate as the real front door for strangers and owners alike, not as a private preview.
|
|
54
|
+
|
|
55
|
+
### The gate itself
|
|
56
|
+
|
|
57
|
+
- **Five views**, switched by a whole-value `body` class assignment (no state-machine object), so
|
|
58
|
+
they are mutually exclusive by construction: `view-entry`, `view-space`, **`view-table`**,
|
|
59
|
+
`view-download`, `view-detail` (`public-landing/gate/space.js`). The page loads in `view-entry`
|
|
60
|
+
(`index.html:141`, re-asserted `space.js:1827`). `view-table` is a full peer **browse view** — a
|
|
61
|
+
sortable project directory with its own search and create button (`space.js:1248`) — and any
|
|
62
|
+
navigation decision has to answer for it, not just for the sky.
|
|
63
|
+
- **The entry ritual runs on every visit.** `ENTRY_TARGET = 'bongos'` (`:1339`); keystrokes are
|
|
64
|
+
matched one at a time (`entryKey()` `:1347-1356`), a wrong key shakes the bar, Enter fires
|
|
65
|
+
`enterSite()` (`:1359`). ESC in `view-space` returns to it (`:1736`, `backToEntry` `:1394`).
|
|
66
|
+
**There is no cookie or storage anywhere in the gate** — a returning signed-in owner re-types
|
|
67
|
+
`bongos` every single time. A skip flag exists (`?entered=1` → `openSpaceDirect()` `:1402-1417`),
|
|
68
|
+
but **it cannot survive an apex arrival: the `/` redirect drops the query string** (`:155-159`).
|
|
69
|
+
So for anyone who types `cloudbongos.com`, the ritual is effectively unskippable.
|
|
70
|
+
- **The gate already knows who you are, and already acts on it.** `space.js:1124-1139` fetches
|
|
71
|
+
`/api/bongos/me` same-origin and resolves `signedIn`/`ME` (`:1047-1049`, task 2094). That flag
|
|
72
|
+
already drives four behaviours through `refreshCreateAffordances()` (`:1099-1104`): the identity
|
|
73
|
+
chip, the ghost orb's label + `.locked` state, the table's create button, and the create
|
|
74
|
+
interception that opens a sign-in prompt (`openCreate()` `:1160`).
|
|
75
|
+
- **The orbs are real projects** — one seeded self-orb (Cloud Bongos, `:30-36`) plus
|
|
76
|
+
`loadProjects()` fetching `/api/bongos/projects/featured` (`:1812`, task 1002260). But the feed is
|
|
77
|
+
a **curated public catalog**: it returned 3 projects (Demo, Emersonian Circles, Example),
|
|
78
|
+
and the server projection selects exactly four columns — `origin, name, tagline, art_url`
|
|
79
|
+
(`modules/platform-identity/platform-identity.js:242-250`). The route is `rank: public` and takes
|
|
80
|
+
`_req` — **it never reads the request, so it cannot vary by viewer**. No owner, no slug, no
|
|
81
|
+
membership. "This orb is yours" does not exist in any form.
|
|
82
|
+
- **The door that shipped** is `.space-projects` (`index.html:203-205`), static markup hidden by
|
|
83
|
+
`body:not(.view-space){ display:none }` (`space.css:285-296`) — a pill in the corner of a drifting
|
|
84
|
+
field, in one view, rendered regardless of sign-in state. `space.js` never references it: **zero
|
|
85
|
+
matches**. That is finding N9.
|
|
86
|
+
|
|
87
|
+
**The precise shape of the bug.** The gate is sign-in aware *everywhere except this door*. Every
|
|
88
|
+
other affordance was wired into `refreshCreateAffordances()`; the `/projects` link landed as static
|
|
89
|
+
markup and was never added. Meanwhile the sign-in chip renders across four views
|
|
90
|
+
(`space.css:562-563`) while the door renders in one — so on the Table view a visitor sees their own
|
|
91
|
+
avatar and **no way to reach their projects**. This is a gap in a working mechanism, not a missing
|
|
92
|
+
capability. Note also that the task 1002696 direction already specified *"the gate gets a **signed-in**
|
|
93
|
+
'Your projects' door"* (`projects-surfaces-redesign-direction.md:108`) — the implementation diverged
|
|
94
|
+
from its own written direction, which is what produced this task.
|
|
95
|
+
|
|
96
|
+
### The asymmetry that explains the bug
|
|
97
|
+
|
|
98
|
+
Goal 1000031 already shipped a first-class **spatial** affordance for *creating*: a ghost
|
|
99
|
+
"create a project" orb in idle empty space, a live preview orb while creating, and a `?name=`
|
|
100
|
+
handover into `/create`. The *managing* path got a text pill in one view. Create earned a place in
|
|
101
|
+
the world; manage did not.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 1. Decisions (owner, 2026-08-13)
|
|
106
|
+
|
|
107
|
+
1. **The entry ritual is removed.** Every visitor lands directly in the sky. The
|
|
108
|
+
"type bongos in any AI" metaphor is not lost — the self-typing logo already cycles
|
|
109
|
+
`claude / gemini / chatgpt …` and retypes **bongos** (`space.js:1477-1478`), which is where the
|
|
110
|
+
idea belongs. The ritual stops being a toll gate in front of the projects.
|
|
111
|
+
2. **A persistent header door, carried by every view.** Not a corner pill and not one view — a real
|
|
112
|
+
navigation element present in every view the gate can be in. With `view-entry` retired (decision 1)
|
|
113
|
+
that means `view-space`, **`view-table`**, `view-download`, and `view-detail` — matching the reach
|
|
114
|
+
the sign-in chip already has, so a visitor never sees their own avatar without a way home.
|
|
115
|
+
3. **A signed-in owner's own projects get a distinct identity in the sky** — worth building the
|
|
116
|
+
owner-scoped data path for. The sky stops being purely someone else's showcase.
|
|
117
|
+
4. **The gate's password wall is temporary** (§0) — design for a public front door.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 2. Principles
|
|
122
|
+
|
|
123
|
+
1. **The way home is always visible.** From any view, at any scroll position, a person can see how to
|
|
124
|
+
reach their own projects. Wayfinding is not a reward for reaching a particular view.
|
|
125
|
+
2. **The door states what it does for *this* visitor.** Signed-out and signed-in are different
|
|
126
|
+
sentences, never the same generic link.
|
|
127
|
+
3. **Nothing stands between a visitor and the projects.** No ritual, no toll, no required keystroke.
|
|
128
|
+
Theatre may accompany the sky; it may not gate it.
|
|
129
|
+
4. **Create and manage are peers.** The sky already offers a way to make a project; it owes an equally
|
|
130
|
+
real way to return to one.
|
|
131
|
+
5. **The sky tells the truth about ownership.** An orb marked as yours must actually be yours,
|
|
132
|
+
resolved from the server — never inferred client-side.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 3. Surface · the entry ritual (removal)
|
|
137
|
+
|
|
138
|
+
- The page loads directly into `view-space`. `view-entry` and its typed terminal are **retired**, not
|
|
139
|
+
merely skipped — the `?entered=1` branch collapses into the default path, and with it go the
|
|
140
|
+
door-visitor special case (`:1079`), the `<head>` anti-flash script (`index.html:15-25`), and the
|
|
141
|
+
two flows that set the flag on the user's behalf (sign-out `:1086`, sign-in return `:1061`), which
|
|
142
|
+
become redundant once the sky is the default.
|
|
143
|
+
- `<body class="view-entry">` in `index.html:141` must change too — the boot class is asserted in
|
|
144
|
+
**two** places (markup and `space.js:1827`), and leaving the markup behind would flash the dead view.
|
|
145
|
+
- **ESC no longer returns to an entry gate.** In `view-space` it should do nothing (or clear an open
|
|
146
|
+
search); `backToEntry()` is removed. A visitor must not be able to fall back into a view that no
|
|
147
|
+
longer exists.
|
|
148
|
+
- The self-typing logo **stays** — it is now the sole carrier of the "type bongos in any AI"
|
|
149
|
+
metaphor, and its job gets more important, not less.
|
|
150
|
+
- **Verify on removal:** `fitToView()` was previously mis-measuring because it ran while
|
|
151
|
+
`body.view-entry` was active and the sky measured 0×0 (`space.js:1570`). Removing the entry view
|
|
152
|
+
changes that timing — the fix must be re-verified, not assumed to survive.
|
|
153
|
+
|
|
154
|
+
## 4. Surface · the persistent door
|
|
155
|
+
|
|
156
|
+
**Which surface it points at.** The apex **`/projects`** (`public-landing/projects.html`, the owner's
|
|
157
|
+
provisioning instances) — *not* the hall's `my-projects` (`modules/hall-ui/`, federation memberships
|
|
158
|
+
via `GET /my-projects`). Two different pages answer to "your projects"; the task 1002696 direction
|
|
159
|
+
put the hall one out of scope and fixed the apex surface on the apex host. This door inherits that
|
|
160
|
+
boundary.
|
|
161
|
+
|
|
162
|
+
**Form.** A header element belonging to the page shell rather than to the orb field, so it does not
|
|
163
|
+
drift, scale, or pan with the sky, and does not depend on `view-space`. It replaces
|
|
164
|
+
`.space-projects`; the `body:not(.view-space)` hide rule is deleted rather than extended.
|
|
165
|
+
|
|
166
|
+
**States** (resolved from the existing `/api/bongos/me` call, never guessed):
|
|
167
|
+
|
|
168
|
+
| Visitor | The door reads | Goes to |
|
|
169
|
+
|---|---|---|
|
|
170
|
+
| Signed out | **Sign in** + a secondary **Start a project** | `auth/web/start?return=…` · `/create` |
|
|
171
|
+
| Signed in, has projects | **Your projects** (the primary door) | `/projects` |
|
|
172
|
+
| Signed in, no projects yet | **Start a project** | `/create` |
|
|
173
|
+
|
|
174
|
+
- **Wire it into `refreshCreateAffordances()`** (`space.js:1099-1104`) rather than inventing a second
|
|
175
|
+
mechanism. That function already relabels the ghost orb and the table's create button off the same
|
|
176
|
+
`signedIn` flag; the door is the one affordance that was never added to it. This is the smallest
|
|
177
|
+
correct change, not a rebuild.
|
|
178
|
+
- While `/me` is still in flight the door renders in its signed-out form and settles when the answer
|
|
179
|
+
arrives — it never renders a "Your projects" link it has not earned. (Principle 2, and the same
|
|
180
|
+
truth discipline the projects surfaces adopted in the task 1002696 direction §3.)
|
|
181
|
+
- The door is present in all four remaining views, including **`view-table`**, where today a visitor
|
|
182
|
+
sees their signed-in avatar and no route to their projects. In `view-download` and `view-detail` it
|
|
183
|
+
keeps the same position and wording — a person deep in a project's detail page can still get home.
|
|
184
|
+
- **Signed-out click-through is currently a doubled ask:** `/projects` renders its own sign-in gate
|
|
185
|
+
(`projects.html:71-72`, identity-only per ADR 0143) even though the gate already knew the visitor
|
|
186
|
+
was signed out. With the door stating sign-in up front, that second prompt becomes the expected
|
|
187
|
+
continuation rather than a surprise — but the door must send a signed-out visitor to
|
|
188
|
+
`auth/web/start?return=/projects` directly, not to `/projects` to be asked again.
|
|
189
|
+
|
|
190
|
+
## 5. Surface · the owner's own orbs
|
|
191
|
+
|
|
192
|
+
**The data path is the work.** `/api/bongos/projects/featured` is a public catalog and cannot answer
|
|
193
|
+
"is this mine" — it carries no owner and no slug. So this needs an owner-scoped source: either a
|
|
194
|
+
signed-in variant of the feed, or the gate merging `GET /provisioning/instances` (which the owner
|
|
195
|
+
already reads on `/projects`, and which carries `slug`, `domain`, `status`, and the
|
|
196
|
+
`last_verified_at`/`last_verified_up` overlay).
|
|
197
|
+
|
|
198
|
+
**Design:**
|
|
199
|
+
|
|
200
|
+
- A signed-in owner's projects appear in the sky as orbs **visually marked as theirs** — a distinct
|
|
201
|
+
treatment, not a duplicate of a catalog orb. If a project is both featured and owned, it renders
|
|
202
|
+
once, marked as owned.
|
|
203
|
+
- Clicking an owned orb goes to **manage** (`/projects`, anchored on that project), not to the
|
|
204
|
+
project's public site — that is the difference between an owned orb and a catalog orb, and it is the
|
|
205
|
+
"click-to-manage path" the task asked for.
|
|
206
|
+
- An owned orb should carry the same **verification truth** the manage view shows (live · checked Xm
|
|
207
|
+
ago / live? / unreachable). An orb that looks alive for a project that stopped answering is exactly
|
|
208
|
+
the failure the task 1002696 direction existed to kill; the overlay already exists, so the orb must
|
|
209
|
+
use it rather than invent a second story.
|
|
210
|
+
- Signed-out visitors see the catalog exactly as today.
|
|
211
|
+
|
|
212
|
+
**Delivery:** this is the largest piece and is **spun out as its own task** (§6) — the header door
|
|
213
|
+
(§4) and the ritual removal (§3) must not wait on it.
|
|
214
|
+
|
|
215
|
+
## 6. Delivery split
|
|
216
|
+
|
|
217
|
+
| Piece | Where |
|
|
218
|
+
|---|---|
|
|
219
|
+
| Entry-ritual removal (§3) + persistent door with sign-in states (§4) | **task 1002743** — the implementation carrier |
|
|
220
|
+
| Owner-scoped feed + owned-orb identity + click-to-manage + verification overlay on orbs (§5) | **task 1002744** — spun out; gated on nothing, but sequenced after 1002743 |
|
|
221
|
+
| Removing the Caddy `basic_auth` at launch | **infra, not this direction** — an owner/operator act, tracked with the launch, not by a surface task |
|
|
222
|
+
| `/index.html` being publicly served but unreachable from `/` | **idea 1000713** — a launch-shape question (retire it, or make it the public front with the sky behind), deliberately not decided here |
|
|
223
|
+
| `gate/README.md` + `space.css` claiming space-bar opens search when the shipped trigger is SHIFT | **idea 1000714** — doc drift left by task 1001901, unrelated to navigation |
|
|
224
|
+
|
|
225
|
+
Nothing in §§3–5 is promised without a task id above. If a later reader finds a commitment in this
|
|
226
|
+
doc with no carrier, that is a bug in the doc.
|
|
227
|
+
|
|
228
|
+
## 7. Boundary with goal 1000031
|
|
229
|
+
|
|
230
|
+
Goal 1000031 ("landing page — interactive polish") is nearly all shipped: panning, scroll/pinch zoom,
|
|
231
|
+
SHIFT search + spotlight, the self-typing logo, hover-card lifecycle, the ghost create orb, the
|
|
232
|
+
minimap, the space-whale.
|
|
233
|
+
|
|
234
|
+
**The rule:** if it changes how the sky *moves, looks, or feels*, it belongs to **goal 1000031**. If
|
|
235
|
+
it changes where a person can *go*, it belongs to **this direction**.
|
|
236
|
+
|
|
237
|
+
- The **ghost "create a project" orb** stays 1000031's (it is an existing shipped behaviour); this
|
|
238
|
+
direction only observes that it is the create-side twin of the door we are adding.
|
|
239
|
+
- **Owned-orb identity (§5)** is this direction's, because it is about reaching your own project —
|
|
240
|
+
even though it renders in 1000031's sky. Its *visual polish* once it exists is 1000031's again.
|
|
241
|
+
- The **entry ritual's removal** is this direction's: it is a barrier to reaching the projects, not a
|
|
242
|
+
polish item.
|
|
243
|
+
|
|
244
|
+
## 8. What this direction does not decide
|
|
245
|
+
|
|
246
|
+
- **The gate catalog's contents and curation** — which projects are featured, and how a project earns
|
|
247
|
+
a place in the sky. That is goal 1000031's surface and a separate product question.
|
|
248
|
+
- **The launch-shape question** of `/index.html` vs the sky as the public front door (idea 1000713).
|
|
249
|
+
- **The wall's removal date** — an owner/operator decision tied to launch.
|
|
250
|
+
|
|
251
|
+
## 9. Sign-off dispositions (owner, 2026-08-13)
|
|
252
|
+
|
|
253
|
+
Four calls were made in session; none are left open.
|
|
254
|
+
|
|
255
|
+
1. **The gate's password wall is temporary** and comes off at launch — so this direction designs a
|
|
256
|
+
public front door rather than a private preview. (Had the answer been "the wall stays", the right
|
|
257
|
+
move would have been the opposite: invest in `/create` and `/projects` as the real front doors and
|
|
258
|
+
leave the gate alone — building a hallway behind a locked door is the failure mode this question
|
|
259
|
+
was asked to avoid.)
|
|
260
|
+
2. **The entry ritual is removed outright** — land on the sky. The owner declined the softer options
|
|
261
|
+
(skip-for-returning-visitors, auto-complete); the metaphor lives on in the self-typing logo.
|
|
262
|
+
3. **The door is a persistent header carried by every view**, not a signed-in-only element and not a
|
|
263
|
+
corner pill.
|
|
264
|
+
4. **Owner-orbs are worth the data path** — the owner explicitly chose to build the owner-scoped feed
|
|
265
|
+
rather than defer it, accepting that it is the larger half of the work (task 1002744).
|
|
266
|
+
|
|
267
|
+
**One correction landed during the session and is reflected above:** the premise that the gate is
|
|
268
|
+
sign-in blind was wrong. It already resolves `/me` and already gates the create path on it — so the
|
|
269
|
+
door is a one-line omission from a working mechanism, and the build in task 1002743 should be
|
|
270
|
+
correspondingly small. The premise that the gate has four views was also wrong; there are five, and
|
|
271
|
+
`view-table` is the view where the gap is most visible (avatar present, door absent).
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.87",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.87",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.87",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
package/src/module-api.js
CHANGED
|
@@ -597,8 +597,12 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
597
597
|
// landed since 1.19.83 with no explicit bump. run 31651217970. (task 1002620)
|
|
598
598
|
// 1.19.85 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
599
599
|
// landed since 1.19.84 with no explicit bump. run 31651469729. (task 1002620)
|
|
600
|
+
// 1.19.86 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
601
|
+
// landed since 1.19.85 with no explicit bump. run 31655210981. (task 1002620)
|
|
602
|
+
// 1.19.87 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
603
|
+
// landed since 1.19.86 with no explicit bump. run 31656188572. (task 1002620)
|
|
600
604
|
// ---------------------------------------------------------------------------
|
|
601
|
-
const CORE_VERSION = '1.19.
|
|
605
|
+
const CORE_VERSION = '1.19.87'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
602
606
|
|
|
603
607
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
604
608
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|