Commit graph

24 commits

Author SHA1 Message Date
e771073909 test: 81 unit tests for tickets (data, storage, transcript, ui)
All checks were successful
ci / ci (push) Successful in 1m3s
- tests/test_data.py: models serialization, enums, roundtrip
- tests/test_storage.py: CRUD JSON, cache, persistence
- tests/test_transcript.py: HTML generation, escaping, attachments
- tests/test_ui.py: button callbacks with mocked interactions
- Fixed: transcript.py attachments access (dataclass not dict)
2026-10-02 19:34:11 +02:00
628e02aea9 fix(ticket): boutons en français, accents, retrait priorité/infos,组织 layout
All checks were successful
ci / ci (push) Successful in 45s
- Boutons: Réclamer, Transférer, Verrouiller/Déverrouiller, Ajouter, Fermer
- Accents français partout (catégorie, équipe, configuré, etc.)
- Retiré PriorityButton et StatsButton (trop chargé)
- Layout: Gestion (Réclamer/Transférer/Verrouiller) → Ajouter/Fermer
2026-09-26 13:39:03 +02:00
a92dcef08e fix(ticket): add section labels with separators between button groups
Some checks failed
ci / ci (push) Failing after 42s
2026-09-26 13:22:14 +02:00
16fd36ead7 fix(ticket): organize buttons by group (gestion/info/danger)
Some checks failed
ci / ci (push) Failing after 47s
2026-09-26 13:19:50 +02:00
064a5e65f4 fix(ticket): move mention into Container TextDisplay (Components V2)
All checks were successful
ci / ci (push) Successful in 45s
2026-09-26 13:17:11 +02:00
c959a9753d fix(ticket): remove invalid emoji from buttons causing 400 error
All checks were successful
ci / ci (push) Successful in 46s
2026-09-26 12:48:39 +02:00
8f2e121d61 fix: skip health server in dev mode (no port needed locally)
All checks were successful
ci / ci (push) Successful in 51s
2026-09-25 19:59:23 +02:00
e46c04fe98 feat(ticket): add transfer, priority, lock/unlock, stats, message recording
All checks were successful
ci / ci (push) Successful in 44s
- TransferButton: transfer ticket to another staff member
- PriorityButton: set ticket priority (low/normal/high/urgent)
- LockButton: lock/unlock ticket (toggle channel permissions)
- StatsButton: show ticket info (category, user, claimed, priority, messages)
- on_message listener: records all messages for transcript
- TicketData: added locked, priority fields
2026-09-25 19:38:24 +02:00
4d1e265848 feat(ticket): add claim, add member, persistent management view
All checks were successful
ci / ci (push) Successful in 47s
- ClaimButton: staff claim/unclaim with log
- AddMemberButton: UserSelect to add member to ticket channel
- TicketManagementView: persistent LayoutView with all 3 buttons
- claimed_by field in TicketData
- Buttons registered as persistent views for bot restart survival
2026-09-25 19:28:15 +02:00
80daeae55c fix(ticket): move command group inside Cog class for proper sync
All checks were successful
ci / ci (push) Successful in 46s
2026-09-20 20:13:07 +02:00
57b6f09dd7 feat(ticket): rewrite ticket system from scratch inspired by Kuby
All checks were successful
ci / ci (push) Successful in 46s
New minimal ticket system (dev only):
- Panel with create ticket button (Components V2, no accent colors)
- Category selection via dropdown or direct modal (1 cat)
- Ticket channel creation with permissions, staff role, welcome message
- Close flow: staff check, transcript HTML (dark theme), log, auto-delete
- /ticket setup, /ticket config (interactive panel)
- Storage: JSON per-ticket + config.json (singleton pattern)
- Modular architecture: data.py, storage.py, ui.py, transcript.py, cog.py
- Removed old modmail system
2026-09-20 20:04:10 +02:00
4d2be145aa fix(ci): ruff format bot.py
All checks were successful
ci / ci (push) Successful in 44s
ci / ci (pull_request) Successful in 45s
deploy / deploy (push) Successful in 37s
2026-09-20 18:56:06 +02:00
a32dc723e9 fix(bot): guild sync dev (discord.Object) + tolerant des echecs de sync
Some checks failed
ci / ci (push) Failing after 44s
ci / ci (pull_request) Failing after 42s
2026-09-19 16:47:04 +02:00
21123b182f ci: handle one-time systemd -> Docker transition in deploy_runner
All checks were successful
ci / ci (push) Successful in 41s
ci / ci (pull_request) Successful in 41s
2026-09-19 16:08:22 +02:00
4ebbc7180f chore(ci): remove temporary runner label check
Some checks failed
ci / ci (push) Has been cancelled
ci / ci (pull_request) Successful in 40s
2026-09-19 16:07:24 +02:00
3face47d42 chore(ci): temporary runner label check (omhk-deploy)
Some checks failed
runner-ping / ping (push) Successful in 0s
ci / ci (push) Has been cancelled
ci / ci (pull_request) Successful in 41s
2026-09-19 16:06:39 +02:00
e22a98a4a3 ci: align deployment on Kuby (Docker + rsync + SSH key + healthcheck + rollback)
All checks were successful
ci / ci (push) Successful in 44s
ci / ci (pull_request) Successful in 43s
- Add HTTP /health endpoint (aiohttp) for Docker healthcheck + post-deploy check
- Dockerfile HEALTHCHECK hits /health; docker-compose exposes 1890, container vision-bot
- scripts/deploy_runner.sh runs on .117 (docker compose build/restart)
- .forgejo/workflows/deploy.yml: single job on omhk-deploy runner (clone, syntax test,
  rsync, deploy, health check, auto-rollback) like Kuby
- .forgejo/workflows/ci.yml: single job (ruff + pytest) on dev/PR
2026-09-19 16:04:59 +02:00
e32ca9c8fb fix(ci): checkout the pushed commit instead of default branch
All checks were successful
CI/CD / lint (push) Successful in 41s
CI/CD / test (push) Successful in 44s
CI/CD / lint (pull_request) Successful in 44s
CI/CD / test (pull_request) Successful in 45s
CI/CD / deploy (push) Has been skipped
CI/CD / deploy (pull_request) Has been skipped
- git clone defaulted to main, so dev pushes were tested against main
- Now clone + git checkout github.sha
- Deploy: restart service via sudo -S with secret password
2026-09-19 15:34:42 +02:00
32513485c3 fix(modmail): correct attachment handling + include initial message in transcript
Some checks failed
CI/CD / lint (push) Failing after 43s
CI/CD / test (push) Successful in 42s
CI/CD / deploy (push) Has been skipped
CI/CD / lint (pull_request) Failing after 43s
CI/CD / test (pull_request) Successful in 48s
CI/CD / deploy (pull_request) Has been skipped
- Fix discord.File.from_attachment (nonexistent) -> Attachment.to_file()
- Record initial ticket reason into transcript history
2026-09-19 15:30:34 +02:00
b736f4cc8b refactor(modmail): centralize config into single /modmail config panel
Some checks failed
CI/CD / lint (push) Has been cancelled
CI/CD / test (push) Has been cancelled
CI/CD / deploy (push) Has been cancelled
- Remove 5 redundant commands (setup, addcategory, removecategory, enable, disable)
- Single /modmail config opens interactive Components V2 panel
- Channel select for ticket category, role select for staff, channel select for logs
- Toggle enable/disable button
- Categories sub-panel: add via modal, remove via select
- Fix lint (unused imports/vars, contextlib.suppress) + ruff format
2026-09-19 15:30:07 +02:00
f505b6c552 feat: modmail ticket system with Components V2 + HTML transcripts
Some checks failed
CI/CD / lint (push) Failing after 43s
CI/CD / test (push) Successful in 43s
CI/CD / deploy (push) Has been skipped
- DM-based modmail: user DMs bot -> ticket channel created
- Staff relay: messages in ticket -> DM to user
- Configurable categories via /modmail addcategory
- Setup via /modmail setup (category, staff role, log channel)
- Close command: /close or !close -> HTML transcript generated
- Components V2: Container, TextDisplay, Separator, persistent views
- Transcript: dark theme HTML with staff badges, avatars, timestamps
2026-09-19 15:20:08 +02:00
f0e93d6262 fix(ci): rewrite workflow without data.forgejo.org proxy
Some checks failed
CI/CD / lint (push) Failing after 49s
CI/CD / test (push) Successful in 47s
CI/CD / deploy (push) Has been skipped
- Replace actions/checkout with direct git clone from Forgejo
- Replace actions/setup-python with apt install python3
- Use sshpass for deploy instead of appleboy/ssh-action
- Compatible with self-hosted Forgejo runners
2026-09-19 12:43:21 +02:00
0bdf414540 feat: dev/prod environment split + APPLICATION_ID + privileged intents
Some checks failed
CI/CD / lint (push) Failing after 2s
CI/CD / test (push) Failing after 1s
CI/CD / deploy (push) Has been skipped
- .env.dev / .env.prod with separate tokens and APPLICATION_ID
- Bot syncs commands to specific guild in dev mode
- Global sync for production
- Updated .forgejo/workflows/ci.yml with SSH deploy to prod server
- Updated .gitignore for .env.dev / .env.prod
2026-09-19 12:31:30 +02:00
e44349cea9 feat: initial project setup — Vision Studio bot
Some checks failed
CI / lint (push) Failing after 2s
CI / test (push) Failing after 1s
- Python 3.12 + discord.py
- Docker + docker-compose
- Forgejo Actions CI (lint + test)
- Cog system with /hello example
- deploy.sh for auto-deployment
2026-09-19 12:11:06 +02:00