Skip to content

Feat/gitbooks#1

Merged
senamakel merged 3 commits into
tinyhumansai:developfrom
senamakel:feat/gitbooks
Mar 19, 2026
Merged

Feat/gitbooks#1
senamakel merged 3 commits into
tinyhumansai:developfrom
senamakel:feat/gitbooks

Conversation

@senamakel
Copy link
Copy Markdown
Member

No description provided.

- Documented tasks including skill downloads, JSON-RPC state management, and custom MCP server integration.
- Outlined payment flow integration and various skill enhancements.
- Added checklist for upcoming Android version and background processes.
- Removed 'deploy/**' from ESLint ignore patterns to ensure better linting coverage.
- Changed the module import path in the GitHub Actions workflow from 'deploy/prepareTauriConfig.js' to 'scripts/prepareTauriConfig.js' for improved organization.
@senamakel senamakel merged commit 1916bb9 into tinyhumansai:develop Mar 19, 2026
1 of 4 checks passed
@senamakel senamakel deleted the feat/gitbooks branch March 31, 2026 00:55
sanil-23 added a commit to sanil-23/openhuman that referenced this pull request Apr 28, 2026
…ems)

tinyhumansai#4  gmail unknown bucket — orphan:{id} fallback instead of collapsing
    all no-address messages into one "unknown" source tree; messages with
    neither address nor id are dropped with a warn (skip sentinel).

tinyhumansai#5  PII in gmail/ingest.rs — participants, source_id, and owner wrapped
    with redact() before logging; no email addresses in log output.

tinyhumansai#7  PII in chunker.rs — source_id in debug logs replaced with
    redact(source_id) hash.

tinyhumansai#8  Parent dir fsync after rename in atomic.rs — on Unix, open the parent
    directory and call sync_all() after a successful rename so the dirent
    is durable across a crash; best-effort warn on failure, non-fatal.

tinyhumansai#9  Body verify on re-stage in atomic.rs — when the path already exists,
    read and hash the on-disk body; if sha differs from the new body,
    remove the stale file and re-write atomically so SQLite content_sha256
    always matches the on-disk bytes. New unit test covers the re-write path.

tinyhumansai#10 PII in paths.rs — malformed source_id fallback log now emits
    redact(source_id) instead of the raw string.

tinyhumansai#11 PII in read.rs — sha256 mismatch warn logs now emit
    redact(abs_path) instead of abs_path.display().

tinyhumansai#13 Same-tx enqueue in handle_extract — append_buffer and topic_route
    jobs are built before the transaction opens and enqueued via
    enqueue_tx() inside the same tx that commits the lifecycle update,
    eliminating the crash window where lifecycle commits but jobs are lost.

tinyhumansai#16 PII in score/extract/mod.rs — LLM extractor info! log demoted to
    debug! and endpoint wrapped with redact_endpoint() to strip
    path/query/credentials from the URL.

tinyhumansai#17 Non-email scope slug in bucket_seal.rs — only the gmail: prefix is
    stripped before slugify; all other source kinds (slack:, discord:,
    document:, …) slugify the full scope string so slack:#eng and
    discord:#eng no longer produce the same "eng" slug and collide in
    summaries/source/.

tinyhumansai#18 Don't commit summary on stage_summary failure — bucket_seal.rs,
    global_tree/digest.rs, and global_tree/seal.rs now propagate
    stage_summary errors via .context()?  instead of falling back to a
    NULL content_path row; the seal is retried via the normal job-retry
    path. insert_summary_tx callers in those three paths now always pass
    Some(&staged) instead of Option.

tinyhumansai#20 PII in topic_tree/backfill.rs — all entity_id occurrences in log
    lines (info/debug/warn) replaced with redact(entity_id).

New shared helper: src/openhuman/memory/tree/util/redact.rs
  - redact(s)          → stable 8-hex-char SHA-256 prefix for PII fields
  - redact_endpoint(u) → host:port only (strips scheme, creds, path, query)
  - Full unit-test coverage for both helpers

Items tinyhumansai#14 (lease tokens) and tinyhumansai#19 (preview-vs-disk reader audit)
intentionally deferred to follow-up commits — both have larger blast
radius and need separate review.

Items tinyhumansai#1, tinyhumansai#12, tinyhumansai#15 pushed back on PR thread (verified false positive or
covered by upstream contract).

Items #2, tinyhumansai#3 deferred (pre-existing in slack_backfill.rs, not introduced
by this PR).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CodeGhost21 added a commit to CodeGhost21/openhuman that referenced this pull request May 6, 2026
Two CI fixes for tinyhumansai#1304 (tinyhumansai#1280):

- Dockerfile: add libasound2-dev / libxdo-dev / libxtst-dev / libx11-dev
  / libevdev-dev to the builder stage and the matching libasound2 /
  libxdo3 / libxtst6 / libx11-6 / libevdev2 to the runtime stage. The
  core crate has unconditional dependencies on cpal, enigo, arboard,
  and rdev (voice / autocomplete / clipboard subsystems) that link
  against ALSA and X11, even when those features are inactive at
  runtime. Without these packages the bookworm build of openhuman-core
  fails at the alsa-sys pkg-config step.

- docs/CLOUD_DEPLOY.md: replace em-dashes in section headings with
  colons so GitHub's slug algorithm produces single-hyphen anchors
  matching the TOC links. Lychee was failing on
  'tinyhumansai#1-digitalocean-app-platform-one-click' / '...manual-doctl' because
  the actual headings produced double-hyphen slugs.
CodeGhost21 added a commit to CodeGhost21/openhuman that referenced this pull request May 12, 2026
- Avoid double-move of `err` in the top_up/out_of_credits classify
  test by matching on `&err` and pre-computing a label string.
- Add `cloud_budget_exhausted_on_retry_falls_through_to_local`
  to cover the path where cloud is transient on attempt tinyhumansai#1 and
  budget-exceeded on the retry — must skip a third cloud call
  and dispatch to local.
- Carry envelope correlation fields (source / display_label /
  external_id) and the active resolution path on the two
  budget-exhausted warn! sites so operators can grep these
  back to the triggering event.
sanil-23 added a commit to sanil-23/openhuman that referenced this pull request May 14, 2026
- VoicePanel.test.tsx: assert tts-voice-select (not tts-voice-input) when
  seeded Piper provider has a known preset voice id (tinyhumansai#1)
- VoicePanel.tsx: fix stale-closure reseeding by using functional setState
  updater (prev || seeded) so interval polls can't clobber user edits (#2)
- local_transcribe.rs: resolve model path via resolve_stt_model_path_by_id
  so the per-request model_id override is actually used (tinyhumansai#3); wrap
  cmd.output() in a 120s tokio::time::timeout to prevent hung STT (tinyhumansai#4)
- voice_install_common.rs: delete .part file on chunk-read and write errors
  so mid-stream failures don't leave stale artifacts (tinyhumansai#5)
- schemas.rs: make voice default provider-aware; only fall back to
  DEFAULT_PIPER_VOICE when provider == "piper", leave cloud voice unset
  unless explicitly provided (tinyhumansai#6)
- paths.rs: add resolve_stt_model_path_by_id helper used by tinyhumansai#3
- Settings.tsx, VoicePanel.tsx: fix Prettier formatting (CI gate)

Heavy lifts deferred (replied on threads): atomic install-start race (tinyhumansai#7),
TTS trait cloud overrides (tinyhumansai#8). Intentional UX deferral: generic install
button labels (tinyhumansai#9).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
obchain added a commit to obchain/openhuman that referenced this pull request May 18, 2026
Adds a Settings → Account → "Import from another assistant" panel
that wraps the existing `openhuman.migrate_openclaw` RPC with a
preview-then-apply flow:

- Vendor dropdown (OpenClaw active; Hermes disabled with a "coming
  soon" callout linking back to the tracking issue).
- Preview button hits the RPC with `dry_run=true` and renders the
  returned `MigrationReport` (source/target paths, per-source counts,
  warnings).
- Apply is locked until a successful Preview lands and fires
  `window.confirm` with the planned counts before calling the RPC
  with `dry_run=false`.
- Inline error surface survives the form so the user can edit + retry
  without losing context.

The Rust core RPC + TS wrapper already existed; this PR ships the
discoverability surface called out as the tinyhumansai#1 gap in the issue. The
Apply path is unblocked by the sibling backend fix in the previous
commit.

Closes tinyhumansai#1440
obchain added a commit to obchain/openhuman that referenced this pull request May 18, 2026
Adds a Settings → Account → "Import from another assistant" panel
that wraps the existing `openhuman.migrate_openclaw` RPC with a
preview-then-apply flow:

- Vendor dropdown (OpenClaw active; Hermes disabled with a "coming
  soon" callout linking back to the tracking issue).
- Preview button hits the RPC with `dry_run=true` and renders the
  returned `MigrationReport` (source/target paths, per-source counts,
  warnings).
- Apply is locked until a successful Preview lands and fires
  `window.confirm` with the planned counts before calling the RPC
  with `dry_run=false`.
- Inline error surface survives the form so the user can edit + retry
  without losing context.

The Rust core RPC + TS wrapper already existed; this PR ships the
discoverability surface called out as the tinyhumansai#1 gap in the issue. The
Apply path is unblocked by the sibling backend fix in the previous
commit.

Closes tinyhumansai#1440
obchain added a commit to obchain/openhuman that referenced this pull request May 19, 2026
Adds a Settings → Account → "Import from another assistant" panel
that wraps the existing `openhuman.migrate_openclaw` RPC with a
preview-then-apply flow:

- Vendor dropdown (OpenClaw active; Hermes disabled with a "coming
  soon" callout linking back to the tracking issue).
- Preview button hits the RPC with `dry_run=true` and renders the
  returned `MigrationReport` (source/target paths, per-source counts,
  warnings).
- Apply is locked until a successful Preview lands and fires
  `window.confirm` with the planned counts before calling the RPC
  with `dry_run=false`.
- Inline error surface survives the form so the user can edit + retry
  without losing context.

The Rust core RPC + TS wrapper already existed; this PR ships the
discoverability surface called out as the tinyhumansai#1 gap in the issue. The
Apply path is unblocked by the sibling backend fix in the previous
commit.

Closes tinyhumansai#1440
@wswslzp wswslzp mentioned this pull request May 20, 2026
justinhsu1477 added a commit to justinhsu1477/openhuman that referenced this pull request May 22, 2026
Addresses graycyrus's tinyhumansai#2316 review minor tinyhumansai#1 (tag-array sanitization).

Adds two upper bounds in `build_rpc_params("tree.tag")`:

  TREE_TAG_MAX_TAGS       = 50
  TREE_TAG_MAX_TAG_LENGTH = 128

Both reject up-front via `ToolCallError::InvalidParams` rather than
silently truncating — same "explicit rejection over silent clamping"
discipline already used by `required_non_empty_string_array` for
empty/blank entries.

Error messages match the existing argument-rejection style:
  "argument `tags` accepts at most 50 entries (got N)"
  "argument `tags` entry exceeds 128 characters (got N chars)"

The caps prevent two specific misuse patterns:
  - A misbehaving MCP client flooding a single chunk's tag-record
    document with hundreds of categorical labels (would bloat the
    document tags index disproportionately).
  - A single oversize tag that's actually free-form text — that
    payload belongs in `memory.note`, not the categorical tag
    surface. Rejecting up-front surfaces the misuse rather than
    silently writing a giant token into the queryable `tags` index.

Three new unit tests cover:
  - Oversize array rejection (TREE_TAG_MAX_TAGS + 1 entries).
  - Oversize single-entry rejection (TREE_TAG_MAX_TAG_LENGTH + 1 chars).
  - Boundary acceptance (exactly TREE_TAG_MAX_TAGS entries with
    each entry at exactly TREE_TAG_MAX_TAG_LENGTH chars) so a future
    off-by-one refactor fails this test, not user calls.

Tests: 11 tree_tag unit tests pass (was 8; +3 new). All 59 existing
`mcp_server` tests still pass — no regression.

Verified locally:
  - `cargo check --lib` clean
  - `cargo test --lib tree_tag` 11/11 pass
  - `cargo fmt --check` clean
  - `cargo clippy --lib --no-deps` no new warnings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant