mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
release: v0.1.0 — one-click install, keyless boot, in-app Provider Settings (#142)
The first formal release. - One-click install via Pinokio; keyless boot lands on a live Esri World Imagery satellite globe with keyless terrain, with automatic OSM fallback and graceful degradation when terrain is unavailable. - Provider Settings (the POWER UP panel): add, replace, or remove API keys inside the app; credential files made owner-only before any secret is written; external keys shown read-only; the panel refuses shared or proxied servers. - Keyless capability responses for the optional HUD summary and place search. - Aircraft-identity voice answers cover operator, type, and route, and say so plainly when enrichment is unavailable. - README rewritten keyless-first; concise 0.1.0 changelog section; CI workflow included. Gates: 2,672 unit tests pass / 0 fail, build clean, tracking regression 108/108, map-source tray QA pass, setup doctor ready.
This commit is contained in:
1 parent
6d83bb6008
commit
b6da93b8ac
170 files changed
+5800
-853
No files matched your search
@@ -0,0 +1,30 @@
|
||||
# God's Eye View works without any API keys.
|
||||
# Easiest way to add one: open PROVIDER SETTINGS inside the running app (the
|
||||
# POWER UP chip, bottom-right). It saves into this file for you with owner-only
|
||||
# permissions and restarts the app — you never need to edit this file by hand.
|
||||
# Manual fallback: use Pinokio's File Explorer to reveal this ignored
|
||||
# pinokio/ENVIRONMENT file, edit it with a trusted local text editor, uncomment
|
||||
# only the providers you need, then Stop and Start the app. This file is
|
||||
# plaintext, not encrypted.
|
||||
# Do not enter credentials in Pinokio 8.0.40's native Configure panel: that
|
||||
# release saves this nested layout to the wrong path and logs submitted values.
|
||||
|
||||
# GOOGLE_MAPS_API_KEY=
|
||||
# CESIUM_ION_TOKEN=
|
||||
# OPENAI_API_KEY=
|
||||
# AISSTREAM_API_KEY=
|
||||
# FIRMS_MAP_KEY=
|
||||
# TOMTOM_API_KEY=
|
||||
# OPENSKY_CLIENT_ID=
|
||||
# OPENSKY_CLIENT_SECRET=
|
||||
# LL2_API_TOKEN=
|
||||
|
||||
# Keep sharing off. The current supported Pinokio release logs successful
|
||||
# tunnel-login passcodes, so the launcher refuses to create a tunnel.
|
||||
PINOKIO_SHARE_CLOUDFLARE=false
|
||||
PINOKIO_SHARE_LOCAL=false
|
||||
PINOKIO_SHARE_VAR=__gev_sharing_disabled__
|
||||
|
||||
# App-level guards, not billing caps. Provider-side budgets remain authoritative.
|
||||
GEV_RATELIMIT_OPENAI_PER_MIN=30
|
||||
GEV_RATELIMIT_GOOGLE_PER_MIN=120
|
||||
@@ -0,0 +1,35 @@
|
||||
module.exports = {
|
||||
run: [
|
||||
{
|
||||
when: "{{!kernel.exists(cwd, 'ENVIRONMENT')}}",
|
||||
method: 'fs.copy',
|
||||
params: {
|
||||
src: '_ENVIRONMENT',
|
||||
dest: 'ENVIRONMENT',
|
||||
},
|
||||
},
|
||||
{
|
||||
method: 'shell.run',
|
||||
params: {
|
||||
path: '..',
|
||||
// Forward nonblank app configuration values for Pinokio compatibility. The
|
||||
// child also reads the raw app ENVIRONMENT file because Pinokio removes
|
||||
// blank fields before constructing this merged template environment.
|
||||
env: {
|
||||
GOOGLE_MAPS_API_KEY: '{{env.GOOGLE_MAPS_API_KEY || ""}}',
|
||||
CESIUM_ION_TOKEN: '{{env.CESIUM_ION_TOKEN || ""}}',
|
||||
OPENAI_API_KEY: '{{env.OPENAI_API_KEY || ""}}',
|
||||
AISSTREAM_API_KEY: '{{env.AISSTREAM_API_KEY || ""}}',
|
||||
FIRMS_MAP_KEY: '{{env.FIRMS_MAP_KEY || ""}}',
|
||||
TOMTOM_API_KEY: '{{env.TOMTOM_API_KEY || ""}}',
|
||||
OPENSKY_CLIENT_ID: '{{env.OPENSKY_CLIENT_ID || ""}}',
|
||||
OPENSKY_CLIENT_SECRET: '{{env.OPENSKY_CLIENT_SECRET || ""}}',
|
||||
LL2_API_TOKEN: '{{env.LL2_API_TOKEN || ""}}',
|
||||
GEV_RATELIMIT_OPENAI_PER_MIN: '{{env.GEV_RATELIMIT_OPENAI_PER_MIN || ""}}',
|
||||
GEV_RATELIMIT_GOOGLE_PER_MIN: '{{env.GEV_RATELIMIT_GOOGLE_PER_MIN || ""}}',
|
||||
},
|
||||
message: 'node scripts/pinokio-install.mjs',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "commonjs"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
module.exports = {
|
||||
version: '3.6',
|
||||
title: "God's Eye View",
|
||||
description: 'A live 3D intelligence console for planet Earth.',
|
||||
menu: async (_kernel, info) => {
|
||||
const installed = info.exists('.installed');
|
||||
const installing = info.running('install.js');
|
||||
const starting = info.running('start.js');
|
||||
const updating = info.running('update.js');
|
||||
const resetting = info.running('reset.js');
|
||||
|
||||
if (installing || updating || resetting) {
|
||||
const href = installing ? 'install.js' : updating ? 'update.js' : 'reset.js';
|
||||
const text = installing ? 'Installing' : updating ? 'Updating' : 'Resetting';
|
||||
return [{ default: true, icon: 'fa-solid fa-terminal', text, href }];
|
||||
}
|
||||
|
||||
if (!installed) {
|
||||
return [{ default: true, icon: 'fa-solid fa-download', text: 'Install', href: 'install.js' }];
|
||||
}
|
||||
|
||||
if (starting) {
|
||||
const local = info.local('start.js');
|
||||
if (local?.url) {
|
||||
return [
|
||||
{ default: true, icon: 'fa-solid fa-earth-americas', text: 'Open God\'s Eye View', href: local.url },
|
||||
{ icon: 'fa-solid fa-terminal', text: 'Server', href: 'start.js' },
|
||||
];
|
||||
}
|
||||
return [{ default: true, icon: 'fa-solid fa-terminal', text: 'Starting', href: 'start.js' }];
|
||||
}
|
||||
|
||||
return [
|
||||
{ default: true, icon: 'fa-solid fa-power-off', text: 'Start', href: 'start.js' },
|
||||
{ icon: 'fa-solid fa-arrows-rotate', text: 'Update', href: 'update.js' },
|
||||
{ icon: 'fa-solid fa-broom', text: 'Repair installation', href: 'reset.js' },
|
||||
];
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
module.exports = {
|
||||
run: [
|
||||
{
|
||||
method: 'shell.run',
|
||||
params: {
|
||||
path: '..',
|
||||
message: 'node scripts/pinokio-reset.mjs',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,42 @@
|
||||
module.exports = {
|
||||
daemon: true,
|
||||
run: [
|
||||
{
|
||||
method: 'shell.run',
|
||||
params: {
|
||||
path: '..',
|
||||
env: {
|
||||
HOST: '127.0.0.1',
|
||||
PORT: '{{port}}',
|
||||
GOOGLE_MAPS_API_KEY: '{{env.GOOGLE_MAPS_API_KEY || ""}}',
|
||||
CESIUM_ION_TOKEN: '{{env.CESIUM_ION_TOKEN || ""}}',
|
||||
OPENAI_API_KEY: '{{env.OPENAI_API_KEY || ""}}',
|
||||
AISSTREAM_API_KEY: '{{env.AISSTREAM_API_KEY || ""}}',
|
||||
FIRMS_MAP_KEY: '{{env.FIRMS_MAP_KEY || ""}}',
|
||||
TOMTOM_API_KEY: '{{env.TOMTOM_API_KEY || ""}}',
|
||||
OPENSKY_CLIENT_ID: '{{env.OPENSKY_CLIENT_ID || ""}}',
|
||||
OPENSKY_CLIENT_SECRET: '{{env.OPENSKY_CLIENT_SECRET || ""}}',
|
||||
LL2_API_TOKEN: '{{env.LL2_API_TOKEN || ""}}',
|
||||
PINOKIO_SHARE_CLOUDFLARE: '{{env.PINOKIO_SHARE_CLOUDFLARE || "false"}}',
|
||||
PINOKIO_SHARE_LOCAL: '{{env.PINOKIO_SHARE_LOCAL || "false"}}',
|
||||
PINOKIO_SHARE_VAR: '{{env.PINOKIO_SHARE_VAR || "__gev_sharing_disabled__"}}',
|
||||
GEV_RATELIMIT_OPENAI_PER_MIN: '{{env.GEV_RATELIMIT_OPENAI_PER_MIN || ""}}',
|
||||
GEV_RATELIMIT_GOOGLE_PER_MIN: '{{env.GEV_RATELIMIT_GOOGLE_PER_MIN || ""}}',
|
||||
},
|
||||
message: 'node scripts/pinokio-start.mjs',
|
||||
on: [{
|
||||
event: '/\\[Pinokio\\] Ready at (http:\\/\\/127\\.0\\.0\\.1:[0-9]+\\/)/',
|
||||
done: true,
|
||||
}],
|
||||
},
|
||||
},
|
||||
{
|
||||
// Pinokio requires local.url for ready/Open state. PINOKIO_SHARE_VAR is
|
||||
// pinned to a different sentinel so local.set cannot trigger sharing.
|
||||
method: 'local.set',
|
||||
params: {
|
||||
url: '{{input.event[1]}}',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
module.exports = {
|
||||
run: [
|
||||
{
|
||||
method: 'shell.run',
|
||||
params: {
|
||||
path: '..',
|
||||
// Update reuses the install doctor. The child re-reads raw app
|
||||
// ENVIRONMENT so blank fields override Pinokio-global values too.
|
||||
env: {
|
||||
GOOGLE_MAPS_API_KEY: '{{env.GOOGLE_MAPS_API_KEY || ""}}',
|
||||
CESIUM_ION_TOKEN: '{{env.CESIUM_ION_TOKEN || ""}}',
|
||||
OPENAI_API_KEY: '{{env.OPENAI_API_KEY || ""}}',
|
||||
AISSTREAM_API_KEY: '{{env.AISSTREAM_API_KEY || ""}}',
|
||||
FIRMS_MAP_KEY: '{{env.FIRMS_MAP_KEY || ""}}',
|
||||
TOMTOM_API_KEY: '{{env.TOMTOM_API_KEY || ""}}',
|
||||
OPENSKY_CLIENT_ID: '{{env.OPENSKY_CLIENT_ID || ""}}',
|
||||
OPENSKY_CLIENT_SECRET: '{{env.OPENSKY_CLIENT_SECRET || ""}}',
|
||||
LL2_API_TOKEN: '{{env.LL2_API_TOKEN || ""}}',
|
||||
GEV_RATELIMIT_OPENAI_PER_MIN: '{{env.GEV_RATELIMIT_OPENAI_PER_MIN || ""}}',
|
||||
GEV_RATELIMIT_GOOGLE_PER_MIN: '{{env.GEV_RATELIMIT_GOOGLE_PER_MIN || ""}}',
|
||||
},
|
||||
message: 'node scripts/pinokio-update.mjs',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
Reference in new issue
Block a user