Ferrell Synthetic Intelligence commited on
Commit
dd6c84a
·
1 Parent(s): 4407241

Add offline community hub

Browse files
Files changed (5) hide show
  1. README.md +2 -0
  2. app.js +16 -1
  3. community/README.md +2 -0
  4. community/store-schema.json +15 -0
  5. index.html +8 -0
README.md CHANGED
@@ -49,6 +49,8 @@ The original AIDE Developer's Credo, inspired by broad Mandalorian discipline th
49
 
50
  The local CaseFile workflow in the UI creates a private case, imports local evidence, records SHA-256 receipts, and extracts date anchors before model analysis. See `community/journal-desk.md` and `community/casefile-schema.json`.
51
 
 
 
52
  ## Status
53
 
54
  This is a pre-production engineering release. The Liquid checkpoint is not included until its exact artifact, license, checksum, and evaluation are confirmed. The Qwen weight is downloaded separately from its official repository and should be verified before offline use.
 
49
 
50
  The local CaseFile workflow in the UI creates a private case, imports local evidence, records SHA-256 receipts, and extracts date anchors before model analysis. See `community/journal-desk.md` and `community/casefile-schema.json`.
51
 
52
+ The Community Hub provides an offline cache for projects, issues, discussions, and marketplace metadata. Sync remains disabled until an encrypted transport is explicitly configured.
53
+
54
  ## Status
55
 
56
  This is a pre-production engineering release. The Liquid checkpoint is not included until its exact artifact, license, checksum, and evaluation are confirmed. The Qwen weight is downloaded separately from its official repository and should be verified before offline use.
app.js CHANGED
@@ -87,7 +87,14 @@ async function importModel(model) {
87
  appendLog('MODEL PACK', `${model.name} imported locally. SHA-256: ${hash}. Runtime attachment is still required before inference.`);
88
  renderModels();
89
  selectModel(model);
90
- };
 
 
 
 
 
 
 
91
  input.click();
92
  }
93
 
@@ -204,6 +211,12 @@ function renderCasefile() {
204
  list.innerHTML = state.casefile.evidence.map(item => `<div style="border-left:2px solid #58c7ff;padding-left:5px;margin-top:6px"><b>${esc(item.name)}</b><br>${esc(item.bytes)} bytes | SHA-256 ${esc(item.hash.slice(0, 12))}...<br>dates: ${esc(item.dates.join(', ') || 'none detected')}</div>`).join('');
205
  }
206
 
 
 
 
 
 
 
207
  async function digestFile(file) {
208
  const buffer = await file.arrayBuffer();
209
  const digest = await crypto.subtle.digest('SHA-256', buffer);
@@ -263,6 +276,8 @@ async function boot() {
263
  appendLog('CASEFILE', `Created ${state.casefile.id}. Boundary: private. Evidence remains on this device.`);
264
  };
265
  $('#evidence-input').onchange = importEvidence;
 
 
266
  $('#input').onkeydown = event => { if (event.key === 'Enter') sendChat(); };
267
  }
268
 
 
87
  appendLog('MODEL PACK', `${model.name} imported locally. SHA-256: ${hash}. Runtime attachment is still required before inference.`);
88
  renderModels();
89
  selectModel(model);
90
+ };
91
+
92
+ const communitySeed = {
93
+ projects: [{ title: 'AIDE Sovereign Workbench', detail: 'Local-first IDE and model harness', boundary: 'private' }],
94
+ issues: [{ title: 'Connect LSP language servers', detail: 'Add the first daemon-managed language server adapter', status: 'open' }],
95
+ discussions: [{ title: 'Welcome to the local developer network', detail: 'No account, relay, or network required', status: 'local' }],
96
+ marketplace: [{ title: 'No marketplace listings yet', detail: 'Publish signed artifacts only after license and checksum review', status: 'empty' }]
97
+ };
98
  input.click();
99
  }
100
 
 
211
  list.innerHTML = state.casefile.evidence.map(item => `<div style="border-left:2px solid #58c7ff;padding-left:5px;margin-top:6px"><b>${esc(item.name)}</b><br>${esc(item.bytes)} bytes | SHA-256 ${esc(item.hash.slice(0, 12))}...<br>dates: ${esc(item.dates.join(', ') || 'none detected')}</div>`).join('');
212
  }
213
 
214
+ function renderCommunity(tab = 'projects') {
215
+ const entries = communitySeed[tab] || [];
216
+ $('#community-feed').innerHTML = `<div style="color:#72ff9e;margin-bottom:5px">LOCAL CACHE / SYNC OFF</div>${entries.map(entry => `<div style="border-left:2px solid #b277ff;padding-left:5px;margin:5px 0"><b>${esc(entry.title)}</b><br>${esc(entry.detail)}<br><span style="color:#718994">${esc(entry.boundary || entry.status || 'local')}</span></div>`).join('')}`;
217
+ document.querySelectorAll('[data-community-tab]').forEach(button => button.style.color = button.dataset.communityTab === tab ? '#72ff9e' : '#718994');
218
+ }
219
+
220
  async function digestFile(file) {
221
  const buffer = await file.arrayBuffer();
222
  const digest = await crypto.subtle.digest('SHA-256', buffer);
 
276
  appendLog('CASEFILE', `Created ${state.casefile.id}. Boundary: private. Evidence remains on this device.`);
277
  };
278
  $('#evidence-input').onchange = importEvidence;
279
+ document.querySelectorAll('[data-community-tab]').forEach(button => button.onclick = () => renderCommunity(button.dataset.communityTab));
280
+ renderCommunity();
281
  $('#input').onkeydown = event => { if (event.key === 'Enter') sendChat(); };
282
  }
283
 
community/README.md CHANGED
@@ -18,3 +18,5 @@ This release contains a local node identity primitive, policy, node manifest, an
18
  Use Git for code history, signed commits for authorship, end-to-end encryption for group data, explicit replication scopes, replaceable relays for reachability, and user-controlled payment adapters. Never put payment custody or moderation authority in the IDE core.
19
 
20
  See `protocol.md` for the encrypted sync, relay, marketplace, and moderation contracts.
 
 
 
18
  Use Git for code history, signed commits for authorship, end-to-end encryption for group data, explicit replication scopes, replaceable relays for reachability, and user-controlled payment adapters. Never put payment custody or moderation authority in the IDE core.
19
 
20
  See `protocol.md` for the encrypted sync, relay, marketplace, and moderation contracts.
21
+
22
+ The Community Hub stores projects, issues, discussions, and marketplace metadata locally first. Its current UI is a private offline cache; it does not claim that peer synchronization or payments are active.
community/store-schema.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "AIDE Offline Community Store",
4
+ "type": "object",
5
+ "required": ["schema_version", "sync", "projects", "issues", "discussions", "marketplace"],
6
+ "properties": {
7
+ "schema_version": {"const": "1.0"},
8
+ "sync": {"enum": ["local-only", "invited-encrypted", "public-publish"]},
9
+ "projects": {"type": "array"},
10
+ "issues": {"type": "array"},
11
+ "discussions": {"type": "array"},
12
+ "marketplace": {"type": "array"}
13
+ },
14
+ "additionalProperties": false
15
+ }
index.html CHANGED
@@ -55,6 +55,14 @@
55
  <input id="evidence-input" type="file" multiple accept=".txt,.md,.json,.csv,.html,.log,.xml" hidden>
56
  <div id="case-status" style="color:#91c9aa;font:9px/1.7 ui-monospace,monospace;margin-top:8px">No case open.</div>
57
  <div id="evidence-list" style="font:9px/1.5 ui-monospace,monospace;color:#9fb8ba;margin-top:5px"></div>
 
 
 
 
 
 
 
 
58
  </aside>
59
 
60
  <section class="editor-column">
 
55
  <input id="evidence-input" type="file" multiple accept=".txt,.md,.json,.csv,.html,.log,.xml" hidden>
56
  <div id="case-status" style="color:#91c9aa;font:9px/1.7 ui-monospace,monospace;margin-top:8px">No case open.</div>
57
  <div id="evidence-list" style="font:9px/1.5 ui-monospace,monospace;color:#9fb8ba;margin-top:5px"></div>
58
+ <div class="section-heading divider">COMMUNITY HUB</div>
59
+ <div class="community-tabs">
60
+ <button data-community-tab="projects">PROJECTS</button>
61
+ <button data-community-tab="issues">ISSUES</button>
62
+ <button data-community-tab="discussions">DISCUSSIONS</button>
63
+ <button data-community-tab="marketplace">MARKET</button>
64
+ </div>
65
+ <div id="community-feed" style="font:9px/1.6 ui-monospace,monospace;color:#9fb8ba;margin-top:7px"></div>
66
  </aside>
67
 
68
  <section class="editor-column">