Skip to content

v0.2.0-beta

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 02:19
· 5 commits to main since this release

Campkeeper

v0.2.0-beta (2026-10-10)

Full Changelog Previous Releases

  • Status texts: Campkeeper is in beta
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • sync_wiki: tell a network error from a missing wiki
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Rescan build 70334, specs follow beta findings, tasks 6.3 6.4 8.3 10.2 11.1
    • Rescan: catalog IDs, skills and replacements unchanged; Enchanted Lute
      now gives +114 armor and +4 to all stats (was +71 and +2). Wiki page
      regenerated, research notes the 1 h -> 5 min cooldown change.
    • Specs: panel only at the camp (hides 10 s after leaving even with
      benefits), queue only during chat lockdown, player names with surnames,
      planner without "per hour".
    • Tasks confirmed in game: one-click placement, sitting bar and hints,
      pins for own and seen camps, catalog "known" marks, client rescan.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Beta checklist: A5, A7, A11, A15 pass; radius samples and session notes
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Beta fixes: addon messages, unique names, recipes, panel away from camp
    From the 2026-10-10 beta session (build 70334):
    • Comm: AreOutgoingAddonChatMessagesRestricted() is always true in Forever,
      yet guild and channel messages go out and echo back. Queue only during
      InChatMessagingLockdown(); the flag is only recorded for research.
    • Forever has regionally unique names ("Name Surname"). New
      ns.api.unitFullName/senderName: own echo is no longer taken for another
      player, the self whisper reaches us, the planner matches PROF senders.
    • Recipes learned in the profession window were wiped at login
      (IsPlayerSpell is false for profession recipes); now only the window
      may clear them.
    • Panel hides 10 s after leaving the camp even while benefits last.
    • /ck commtest and per-tick client state samples for Q5 research.
    • Shared cooldown wording without "per hour" (5 min measured in 70334);
      wiki, listing and checklist updated.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add Boosty donation link to the listing texts and the wiki
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add player wiki: camping guide, generated camp objects page, sync script
    docs/wiki/ holds the GitHub wiki pages. Camp-Objects.md is generated by
    tools/gen_wiki.py from Data/Catalog.lua and tools/wiki_objects.json, and a
    test fails when it falls behind the catalog. tools/sync_wiki.py publishes
    the pages to the repository wiki. listing.md gets the CurseForge wiki,
    issues, donation and Roadmap page fields.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Beta checklist: A9 benefits composition passes
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Panel: keep long effects inside the panel
    The tent's two-sentence effect spilled far left of the panel and squeezed
    the object names. The status column now has a fixed width (text is cut with
    an ellipsis), rows show the first sentence and the tooltip the full effect;
    the panel is 300 px wide.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Apply first beta data: short benefit names, Boosted Rest, Q5 queue tracking
    The benefits tooltip names the tent 'Палатка' (item: 'Лагерная палатка'):
    the parser now accepts a name contained as whole words in exactly one
    object (or one tier chain) and logs the match. Boosted Rest is aura 1229451
    'Улучшенный отдых' (3600 s): added to the catalog and shown on the panel
    and the alts tab. Research records why messages were queued and when the
    queue was sent. Findings written to the research notes; task 5.5 done.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add beta research collector and /ck report
    Dev/Research.lua records, locally only, what the open client questions need:
    raw Camp Benefits tooltips (Q1), distance to the own fire when its aura
    appears or disappears (Q2) and the burn time, auras gained at camps with a
    tent (Q3), camp blueprints in bags (Q4), addon messages sent / echoed /
    received per channel (Q5), blocked actions, aura durations, placement errors
    and catalog IDs missing in the client. /ck report prints a summary; an option
    turns collection off. Spec addon-shell and tasks group 12 added.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • CI: allow the release job to create GitHub releases; bump actions
    v0.1.0-alpha reached CurseForge and Wago but the GitHub release failed with
    403: the default GITHUB_TOKEN is read-only in new repositories. Also move
    to actions/checkout@v5 and setup-python@v6 (Node 24). Tasks 7.2-7.3 done.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add Wago project ID to the .toc
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add CurseForge project ID to the .toc
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Keep LICENSE as the plain MIT text; note embedded libraries in README
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add MIT license (matches the CurseForge project)
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add project logo and CurseForge/Wago listing texts
    tools/make_logo.py draws original artwork (night sky, tent, campfire) into
    docs/media/logo.png; docs/listing.md holds the form fields and the EN/RU
    descriptions.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • README: replace local paths with placeholders
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Record window check in tasks and beta checklist
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Planner tab: drop manual profession entry
    Members without Campkeeper are listed as such and explained under the plan;
    they get no assignments but their classes still count for class buffs.
    Spec and task 10.4 updated.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Planner tab: explain what it is for and why the plan is short
    Heading and one-line explanation (one camping item per member per hour),
    radio buttons for goal and campfire instead of disabled-looking buttons,
    members with professions on their own line and a 'set professions' link,
    labelled manual entry with dropdowns (modern menu, cycling fallback) and a
    skill placeholder, numbered plan and notes when it is shorter than the
    places (alone, no free members, no skills, class buffs skipped).
    Planner reports skipped families; manual entries no longer write into
    professions received from another member's addon.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Alts tab: live cooldown countdown, details on two lines
    The window refreshes tabs marked LIVE once a second while open, so the
    cooldown counts down; recipes and blueprints moved to their own line
    instead of being cut off.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add main window: catalog, planner and alts tabs
    UI/Window.lua with three tabs (Esc closes, /ck and minimap left click
    toggle). Catalog: profession x tier grid with skill, replacement and known
    recipes (cooking tier 1 is the basic fire). Planner: group roster with
    professions from PROF messages or manual entry, role and fire tier, plan
    posted to group chat. Alts: per-character professions, items, recipes,
    blueprints (unknown until Q4) and cooldown; minimap tooltip lists alts'
    cooldowns. Planner gives the fire to the member least needed elsewhere.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add camp planner
    Core/Planner.lua assigns the fire and objects to group members: one item per
    member (shared 1 h cooldown), class buffs present in the group excluded,
    role weights, highest tier among free members, deterministic; chat lines
    for the group. Planner spec gains the one-item-per-member rule.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add camp sharing; fix panel header layout and glyphs
    Comm/Protocol.lua: CAMPK messages (CAMP/SYNC/PROF) with an arithmetic
    object mask, version check and validation of every incoming message.
    Comm/Comm.lua: guild, group and hidden channel, queue while addon chat is
    restricted, broadcasts own/seen camps, answers guild SYNC (max two
    responders, random 2-8 s delay), errors contained and logged.
    Panel: the middle dot rendered as a box and the header wrapped over the
    first row; the fire timer now has its own line, texts never wrap, and a
    test keeps locale strings to ASCII and Cyrillic.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add camp store and map pins
    Core/CampStore.lua keeps known camps (own, seen, reported), merges records
    within 30 yd with overlapping lifetimes, prefers the most precise source,
    prunes expired ones, caps at 200 and confirms channel reports from two
    players. UI/Pins.lua shows them on the world map and minimap (translucent
    when unconfirmed, edge-floating within 500 yd) and sets a TomTom or
    built-in waypoint on click. Mock UnitPosition axis order fixed.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add beta checklist, CI workflow and packaging layout
    docs/testing/beta-checklist.md with alpha/beta/1.0 scenarios and results so
    far; GitHub Actions runs the Lua tests on every push and BigWigs Packager on
    v* tags; .pkgmeta moves Campkeeper/Campkeeper to the zip root and ignores
    the tooling folders.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add camp panel with row model and secure place buttons
    Core/PanelModel.lua computes rows (placed / placeable / covered), header
    and sitting state without frames. UI/Panel.lua renders them next to the
    buffs: shown near a camp, hidden 10 s after leaving and in combat, secure
    item buttons reconfigured only out of combat, sitting bar and placement
    error hints. Class buff names are cached and missing ones logged once.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add professions, own camp, cooldown, saved benefits and alerts
    Core/Professions.lua keeps per-character skills, camp items and known
    recipes; Core/OwnCamp.lua tracks the own fire and objects within 30 yd,
    placement errors 57/58, the shared camping cooldown and the last benefits
    across sessions; UI/Alerts.lua schedules five optional alerts. Test
    harness gains a relog helper that round-trips SavedVariables.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add minimap button (LibDataBroker launcher + LibDBIcon)
    Left click opens the window (settings until the window exists), right
    click opens settings; the existing option shows and hides the button.
    Part of task 10.1, brought forward.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Rename slash command to /ck and /campkeeper
    /camp is the client's built-in logout command and runs before addon
    commands, so /camp config logged the character out. Spec now forbids
    shadowing client commands; a test guards the registered names.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add camp state machine and Camp Benefits parser
    Core/CampState.lua derives AWAY/NEAR/SITTING/BUFFED from the three camp
    auras on UNIT_AURA, rebuilds on login, full updates and after combat, and
    freezes on combat or secret values. Core/BenefitsParser.lua reads the
    benefits tooltip (multi-line description, grammar codes, colour codes,
    all tier names) and retries until the description arrives.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add Campkeeper catalog: tier table, generator and lookups
    tools/catalog_tiers.json (35 objects, 3 fires, class buffs, planner
    weights); tools/gen_catalog.py resolves placement/craft spells and
    replacements from the client scan and guards the protocol bit order;
    generated Data/Catalog.lua; Core/Catalog.lua with async client names.
    fad.py json --key extracts the scan section. Catalog spec wording
    matches the client data (cooking has tiers 2-3, craft spells optional).
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add Campkeeper shell: debug log, safe API calls, locales, options
    Core/Log.lua ring buffer (200, persisted) with /camp debug [all|clear];
    Core/Util.lua safeCall that contains errors and secret values, UTF-8
    Cyrillic-aware normalize; enUS/ruRU locales; AceConfig options with
    profiles; README section on Campkeeper development.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add Campkeeper skeleton, library fetcher and Lua test harness
    Campkeeper.toc (Interface 16001), embeds.xml and AceAddon entry point;
    .pkgmeta externals with tools/fetch_libs.py (SVN over HTTP, git clones);
    tools/toc.py load-order resolver; tests/wowmock.lua + tests/wowenv.py
    run the full addon in lupa, smoke test loads and enables it.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add OpenSpec change add-campkeeper
    Proposal, design, task list and delta specs for nine capabilities
    (catalog, status, panel, timers, map, sharing, planner, alts, shell)
    based on the Campkeeper design spec.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add OpenSpec with Claude Code integration
    openspec init (schema spec-driven, ru artifacts), /opsx commands and
    skills in .claude/, project context in openspec/config.yaml.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Add WoW Forever API tooling, research notes and Campkeeper spec
    ForeverApiDump dev addon (API dump, camp probe, ID scanner), offline
    parsers and tests, market and client-data research, and the Campkeeper
    design specification.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com