Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
7eba09c
feat!: move runtime storage to PostgreSQL with verified offline upgrades
n30nex Oct 9, 2026
6377102
fix: grant the ingestor access to its readiness view
n30nex Oct 9, 2026
cc89006
fix: support opted-in PR benchmarks and restore database URLs safely
n30nex Oct 9, 2026
7f655ae
fix: run blacklist QA against native PostgreSQL
n30nex Oct 9, 2026
6eda1e6
test: wait for initial theme refresh before scope assertions
n30nex Oct 9, 2026
b5941a8
fix: enable and verify benchmark I/O resource sampling
n30nex Oct 9, 2026
e07bf46
fix: validate benchmark startup and measured samples
n30nex Oct 9, 2026
8e7a11b
fix: preserve legacy date text during PostgreSQL imports
n30nex Oct 9, 2026
caac986
fix: retain sanitized importer errors in benchmark results
n30nex Oct 9, 2026
7b2c19a
test: qualify the full benchmark corpus under common memory limits
n30nex Oct 9, 2026
c315d7d
test: separate the lower-rate comparison from overload qualification
n30nex Oct 9, 2026
1c0281a
fix: make interrupted PostgreSQL upgrades safe to resume
n30nex Oct 9, 2026
0a24721
fix: retain selective PostgreSQL coverage query plans
n30nex Oct 9, 2026
ce023e0
test: read cgroup memory peaks through their reset descriptor
n30nex Oct 9, 2026
fde34bf
docs: publish verified PostgreSQL upgrade and paired performance results
n30nex Oct 9, 2026
7edb473
feat(storage): add explicit backend resolution and native SQLite sche…
n30nex Oct 9, 2026
2dd25d5
feat(storage): keep SQLite default with verified optional PostgreSQL
n30nex Oct 9, 2026
65d837d
Merge upstream store-lock and reach-query performance fixes
n30nex Oct 9, 2026
c03a258
fix(build): complete native SQLite server dependency checksums
n30nex Oct 9, 2026
c77084a
test(ci): initialize first account fixtures explicitly
n30nex Oct 9, 2026
c6fee4e
test(auth): use the native account SQLite driver for fixture access
n30nex Oct 9, 2026
f7ffdfb
fix(sqlite): restore observer planner statistics after identity migra…
n30nex Oct 9, 2026
8c79c4e
test: await background readiness before startup API assertions
n30nex Oct 9, 2026
f15211f
docs: publish optional backend measurements and sizing tradeoffs
n30nex Oct 9, 2026
c6c5c8f
fix(postgres): back up recorded public-schema targets
n30nex Oct 9, 2026
2d1e763
test(qa): exercise the selected native database backend
n30nex Oct 9, 2026
3485ade
fix(ingestor): normalize packet names before database writes
n30nex Oct 12, 2026
5633088
fix(store): enforce cache budget throughout startup and history loading
n30nex Oct 12, 2026
0f33987
fix: page grouped SQL history before loading observations
n30nex Oct 12, 2026
01b2a94
fix(server): include timestamp in fallback packet broadcasts
n30nex Oct 12, 2026
daf56dd
Merge upstream/master and preserve native storage compatibility
n30nex Oct 15, 2026
c488242
fix: resolve cold packet filters outside store lock
n30nex Oct 15, 2026
08a230d
fix(accounts): keep pending registration updates atomic
n30nex Oct 15, 2026
05a2ed9
perf(graph): reuse indexed shortest-path workspaces
n30nex Oct 15, 2026
aa7875a
perf(startup): leave chunked distance indexing lazy
n30nex Oct 15, 2026
d80ed8c
perf(neighbors): refresh snapshots outside request paths
n30nex Oct 15, 2026
867a6f8
fix(readiness): require successful startup loading
n30nex Oct 15, 2026
d2745c6
fix(analytics): defer distance build until initial chunks finish
n30nex Oct 15, 2026
ffd35fc
fix(neighbors): bound topology refresh independently of response cache
n30nex Oct 15, 2026
4cf594a
fix(analytics): guard pending views and discard stale loads
n30nex Oct 15, 2026
a2efafc
fix(frontend): avoid extra rejections during API cleanup
n30nex Oct 15, 2026
91e26e7
fix(analytics): discard obsolete lazy renders and callbacks
n30nex Oct 15, 2026
c5e4656
fix(analytics): count node roles within the selected filters
n30nex Oct 15, 2026
8ab5fd5
fix: ignore stale node analytics responses
n30nex Oct 15, 2026
c24e5b2
fix: anchor resize handles to table headers
n30nex Oct 15, 2026
358904a
fix: fit priority navigation to available header width
n30nex Oct 15, 2026
4e21970
fix(account): discard views after route teardown
n30nex Oct 15, 2026
77a1fb0
fix(packets): preserve desktop all-time filters
n30nex Oct 15, 2026
fda720e
fix(analytics): render safe inline battery status icons
n30nex Oct 15, 2026
70ca320
fix(live): show relay-aware node activity
n30nex Oct 15, 2026
5d2367b
fix(operators): normalize CRLF after logging setup
n30nex Oct 15, 2026
451ab33
fix(operators): refresh build identity after update checkout
n30nex Oct 15, 2026
e623f08
fix(operators): verify readiness before reporting healthy
n30nex Oct 15, 2026
f949b7d
test(frontend): register portable regression suites
n30nex Oct 15, 2026
2408dcf
docs(storage): explain backend sizing and application cache limits
n30nex Oct 15, 2026
30a812f
test(analytics): wait for initial theme before resizing
n30nex Oct 15, 2026
d132e58
chore(lint): declare shared node activity helper
n30nex Oct 15, 2026
f608f15
merge: reconcile current upstream and narrow PostgreSQL scope
n30nex Oct 20, 2026
b101c93
test(storage): expose readiness version and upgrade diagnostic failures
n30nex Oct 20, 2026
122f8b5
fix(storage): accept current schemas and report supported upgrades cl…
n30nex Oct 20, 2026
a2b417b
test(migrate): reject loss of supported SQLite hop-index sources
n30nex Oct 20, 2026
15eb2b6
fix(migrate): recognize and exclude the exact derived hop-index layout
n30nex Oct 20, 2026
7e7c235
test(server): require a terminal startup summary and honest coverage
n30nex Oct 20, 2026
0abec13
fix(server): report startup admission with the complete coverage floor
n30nex Oct 20, 2026
93bf7f8
test(server): reproduce decoded cache races during rewrite publication
n30nex Oct 20, 2026
7794756
fix(server): publish immutable decoded cache generations
n30nex Oct 20, 2026
d3f6134
docs(storage): explain verified upgrades and derived-cache behavior
n30nex Oct 20, 2026
8457c8c
test(e2e): wait for theme initialization before checking home state
n30nex Oct 20, 2026
75625ee
Merge upstream atomic registration fix with native regression coverage
n30nex Oct 20, 2026
81be14d
fix(users): bind pending registration updates for native backends
n30nex Oct 20, 2026
0c6595c
test(e2e): resolve hop fixture using canonical API identity
n30nex Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 25 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,15 +1,36 @@
# MeshCore Analyzer — Environment Configuration
# Copy to .env and customize. All values have sensible defaults.
# New installation: copy to .env and customize. Existing installation: merge
# missing keys into your private .env; do not replace paths or credentials.
#
# This file is read by BOTH docker compose AND manage.sh — one source of truth.
# manage.sh setup negotiates and updates only these production managed keys:
# PROD_DATA_DIR, PROD_HTTP_PORT, PROD_HTTPS_PORT, PROD_MQTT_PORT, DISABLE_MOSQUITTO
# Each environment keeps config + data together in one directory:
# ~/meshcore-data/config.json, meshcore.db, Caddyfile, theme.json
# ~/meshcore-staging-data/config.json, meshcore.db, Caddyfile
# ~/meshcore-data/config.json, Caddyfile, theme.json, queues and backups
# ~/meshcore-staging-data/config.json, Caddyfile, queues and backups
# With PostgreSQL selected, its separate persistent directory is not a logical backup.

# --- Storage choice ---
# SQLite is the default and needs no database service or PostgreSQL credentials.
# setup offers PostgreSQL explicitly. Once installed, storage-selection.json in
# the shared state directory is authoritative; ordinary updates keep it.
# To change engines, use the verified offline storage switch in docs/storage.md.
# Optional PostgreSQL credentials/directories: merge .env.postgres.example.
# Do not replace an existing .env or regenerate existing database passwords.
# Optional container state subdirectory, shared by setup/server/ingestor:
# CORESCOPE_STATE_DIR=/app/data

# --- Example deployment (docker-compose.example.yml only) ---
# For upgrades, point DATA_DIR at the existing state directory BEFORE bootstrap.
# PROD_DATA_DIR and STAGING_DATA_DIR below do not control the example variant.
DATA_DIR=./data
HTTP_PORT=80
# CORESCOPE_IMAGE=<reviewed image tag or digest matching this checkout>
# Bundled Caddy forwards port 80 to the Go server on 3000 by default. If you
# explicitly set DISABLE_CADDY=true, your proxy/port mapping must use port 3000.

# --- Production ---
# Data directory (database, theme, etc.)
# State directory (config, theme, queues and backups)
# Default: ~/meshcore-data
# Used by: docker compose, manage.sh
PROD_DATA_DIR=~/meshcore-data
Expand Down
21 changes: 21 additions & 0 deletions .env.postgres.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# OPTIONAL PostgreSQL settings — merge into your existing private .env.
# Base Compose files need none of these. Add the matching .postgres.yml override.
# Use a different persistent directory for each production/staging instance.
# Generate a DIFFERENT value for each blank field: openssl rand -hex 32
# Keep .env private. Hexadecimal passwords can be safely embedded in the
# generated container URLs; the initializer enforces at least 32 hex digits.
# These roles are created only when PostgreSQL's data directory is empty.
# Editing these values afterward does not change existing database passwords.
POSTGRES_ADMIN_PASSWORD=
CORESCOPE_OWNER_PASSWORD=
CORESCOPE_READER_PASSWORD=
CORESCOPE_WRITER_PASSWORD=
CORESCOPE_ACCOUNTS_PASSWORD=
CORESCOPE_CHANNELS_PASSWORD=
PROD_POSTGRES_DATA_DIR=~/corescope-postgres
STAGING_POSTGRES_DATA_DIR=~/corescope-staging-postgres
# docker-compose.example.yml uses this local default instead:
POSTGRES_DATA_DIR=./postgres-data
# Existing installations keep their recorded backend on update. Changing engines
# requires the offline storage switch in docs/storage.md. Never mount two database
# servers on one persistent directory.
Loading
Loading