| Age | Commit message (Collapse) | Author |
|
Post-0.9.1 release; the chat color-picker / POST body parsing fix
(deacb3f) is now in and verified live on f3s.
|
|
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.
|
|
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.
|
|
Amp-Thread-ID: https://ampcode.com/threads/T-019f299f-7596-73b6-ba71-0f71fcd3c131
Co-authored-by: Amp <amp@ampcode.com>
|
|
Reflects the f3s Helm chart change (persistent-volume.yaml + deployment.yaml
update) that rolled image tag 67babb2 out live.
|
|
Amp-Thread-ID: https://ampcode.com/threads/T-019f299f-7596-73b6-ba71-0f71fcd3c131
Co-authored-by: Amp <amp@ampcode.com>
|
|
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>
|
|
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>
|
|
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.
|