summaryrefslogtreecommitdiff
path: root/README.md
AgeCommit message (Collapse)Author
2026-07-08Bump version to 0.9.2 for ychat, yhttpd, ycursesHEADyhttpd-0.9.2ycurses-0.9.2ychat-0.9.2masterPaul Buetow
Post-0.9.1 release; the chat color-picker / POST body parsing fix (deacb3f) is now in and verified live on f3s.
2026-07-07Bump version to 0.9.1 for ychat, yhttpd, ycursesyhttpd-0.9.1ycurses-0.9.1ychat-0.9.1Paul Buetow
Update VERSION define to 0.9.1 in ychat/src/build.h, yhttpd/src/msgs.h, and ycurses/src/msgs.h. Also bump the 'Version 0.9.0-CURRENT' file-header comments across ychat/src to 0.9.1-CURRENT, and the README example log line.
2026-07-07docs: move f3s/k8s deployment details out to homelab skillPaul Buetow
Remove all f3s/k3s/cluster-specific deployment content from README.md, AGENTS.md, and ychat/DOCKER.md. The DB-backed build's deployment status, live URL, image tag, PVC, Helm chart, and ArgoCD app details now live in the private homelab skill's references/ychat.md sub-reference instead of this public repo. - README.md: drop the 'Deploying to the f3s k3s cluster' section and the 'Deployed to f3s' table note; genericize the emptyDir log note. - AGENTS.md: drop the explicit f3s skill name from the deployment section; keep only a generic out-of-scope pointer to the homelab skill. - ychat/DOCKER.md: remove the 'still running live on the f3s k3s cluster' History mention, the 'Not yet deployed to f3s' block, and the entire 'Deploying to the f3s k3s cluster' section.
2026-07-03docs: drop f3s skill reference from public deploy notesPaul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019f299f-7596-73b6-ba71-0f71fcd3c131 Co-authored-by: Amp <amp@ampcode.com>
2026-07-03README: mark ychat as deployed to f3s (SQLite build, PVC-backed)Paul Buetow
Reflects the f3s Helm chart change (persistent-volume.yaml + deployment.yaml update) that rolled image tag 67babb2 out live.
2026-07-03docs: move f3s k3s deployment details to private f3s skill referencePaul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019f299f-7596-73b6-ba71-0f71fcd3c131 Co-authored-by: Amp <amp@ampcode.com>
2026-07-02ychat: remove the no-database build option (task es0)Paul Buetow
DATABASE/SQLite is no longer optional. src/configure.ac and the generated src/configure now check sqlite3.h/-lsqlite3 unconditionally, the same way pthread/libevent already were, right after those checks (matching order in both files) - there's no --enable-sqlite opt-in any more, and configure aborts via header_error/lib_error if SQLite isn't available rather than silently producing the old in-memory-only, no-account "Mode A" guest chat. --enable-mysql is left alone (pre-existing, separately broken, out of scope - this is about ychat always having *a* database, not about MySQL). With DATABASE guaranteed, the three recent no-DB-build UI special-cases (651f762, 0cdec77, 6c3a65b) are dead code, so they're reverted: deleted html/index_guest.html, reverted html/input.html + src/reqp.cpp to always render a static Options link (dropped the #ifdef DATABASE/%%OPTIONS_LINK%% templating), and the Dockerfile no longer strips register.html/options.html or their .so modules. Unregistered guest chatting itself is untouched - chat.enableguest is a runtime config toggle independent of the compile-time database requirement, and a guest's is_reg is still always false so a guest can never claim operator via chat.defaultop. Consolidated the two Dockerfiles into one (SQLite-backed; deleted Dockerfile.sqlite) and merged DOCKER.md/DOCKER-SQLITE.md into a single DOCKER.md. Updated root README.md and etc/ychat.conf's option descriptions to stop claiming the no-DB build is live/default. Verified in a Rocky Linux 9 podman container: index.html has the password field + Register link, register.html/options.html both resolve, POSTing to register.html creates a SQLite user row, wrong password is rejected and the correct one logs in, the same account's login still works identically after a full container restart with /app/data bind-mounted (persistence), and unregistered guest login still works. Independently reproduced by a fresh-context review agent, which also rebuilt + re-verified the whole flow itself and caught one real (if harmless) issue - the generated src/configure had the SQLite check in a different physical position than configure.ac's - now fixed so both files agree on ordering. Not deployed to f3s: the live cluster still runs the old no-DB image. Rolling this out needs a persistent volume for /app/data and an updated Helm chart - a deliberate follow-up, not done here. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-02ychat: add Mode B - embedded SQLite backend for real user accounts (task cs0)Paul Buetow
Adds a second database backend alongside the (already-broken/dormant) MySQL one: --enable-sqlite (configure.ac/configure, mirrors --enable-mysql), USE_SQLITE (glob.h, mirrors USE_MYSQL), and a con/data implementation using sqlite3_prepare_v2/bind/step (parameterized queries - safer than the MySQL path's hand-rolled character-transliteration escaping). chat.database.dbname doubles as the SQLite file path; the "user" table is created on first connect (CREATE TABLE IF NOT EXISTS) since SQLite has no separate schema- provisioning step. New Dockerfile.sqlite (Mode B) builds and runs this in Rocky Linux 9; DOCKER-SQLITE.md documents everything in detail. DATABASE had never actually been compiled before this (Mode A always disables it, and --enable-mysql doesn't work - configure.ac registers it as AC_ARG_ENABLE(mysqlclient,...) but the gating check tests a third, never-set $enable_mysql - left alone, this task is about moving away from MySQL, not fixing it). Getting DATABASE to compile and actually run for the first time surfaced two real, previously-undetectable bugs, both fixed: - class data collided with std::data() (C++17) under "using namespace std" ("reference to 'data' is ambiguous") - renamed to ychatdb throughout (data.h/cpp, wrap.h/cpp, yc_register.cpp). Same bug class as the function->mod_func_t rename already made in glob.h. - data_base.cpp's config-query parser used "unsigned i_pos" for a string::npos comparison - truncating npos to 32-bit makes the "no more tokens" check never true, and i_pos+1 wraps back to 0, so the loop never advances: an infinite loop that OOM-killed the container within seconds of startup. Fixed to size_t (same bug class already fixed repeatedly in ../yhttpd). Verified in Docker: register creates a row, wrong password is rejected, correct password succeeds, and - the actual point of this task - a second user's login still works identically after a full container restart with the db file on a bind-mounted volume, proving persistence. Independently reproduced by a fresh-context review agent, which also rebuilt + re-verified the whole flow itself. Not deployed to f3s - this is a local proof of concept alongside the live Mode A (in-memory guest chat) deployment. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-06-30Add root README.md (project overview + local Docker quickstart for ychat)Paul Buetow
The repo holds three legacy C++ subprojects (ychat, yhttpd, ycurses). Add a root README that explains them, points at ./ychat (the revived/deployed chat) and its DOCKER.md, and gives a detailed local Docker build/run/access quickstart plus f3s deploy pointer. Also fix the now-stale 'HTTP/0.9 responses' note in ychat/DOCKER.md: ychat emits proper HTTP/1.1 responses since the reqp.cpp header fix.