together17: add points constraint on the suit when auction is finished
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   BUGS |
5  ------+
6    - /cont and /rules just during 'bidding' phase
7    DONE - Not sequence of 3 same chars
8    DONE   . check server side with test
9    DONE - Global vars checker
10    <release>
11    - usermgmt: add user delete
12    DONE - 10002 message when already clicked
13    DONE - trim spaces in apprentice form
14    DONE - Remove books from chat
15    DONE - usermgmt: add email
16
17
18   FEATURES |
19  ----------+
20    * multiple rules
21      DONE - show current rules
22      DONE - select tournment dropdown menu (send a 'cont' like message for each change)
23      WIP - new rules for 'together for fun' turnment
24        DONE . strange 4 abandoned rule for auction
25        DONE . check of max points
26        DONE . check of suit at the end of bet
27
28      - select rules dropdown 'selected' to the current rule or the current
29      - increase constraint for rules change
30      - cache data structure for tournments
31        . reload on SIGHUP
32
33    WIP * inherited info
34    * Users Network construction
35      DONE - sql
36      DONE - dbase API
37      DONE - add apprentices tables
38      DONE - remove entry when set unknown
39      DONE - enhance info interface
40        DONE . SQL to show current evaluation
41        DONE . disable parts of interface
42        WIP . add title to items
43        . fix SELECT 
44      <release>
45      - minisplash at end of the match
46      - differentiate table authorization
47    * add new kind of isolation for apprentice
48
49    * Double click on chat to open preferences
50
51    * APPRENTICE
52      Phase2
53      DONE - match counters (part 2)
54        DONE . migration script for old users
55      - guarantee for apprentice
56
57
58
59 ---------
60    - APPRENTICE
61      Phase2
62      DONE - match counters (part 2)
63        DONE . migration script for old users
64
65    - APPRENTICE
66      Phase1
67      DONE - correggere minuta giornaliera
68      DONE - aggiungere mask per autogar
69      DONE - correggere email per apprentice
70      DONE - verificare la variabile per tout IP ban apprentice
71      DONE - chat ban for apprentice
72
73      DONE - ip check and time limit
74        DONE . sql
75          DONE . temporary table limitation
76        DONE . message
77      DONE - usermgmt extension
78      DONE - add close button
79      DONE - add apprentice icon
80      DONE - match counters (part 1)
81        DONE . sql for match counters
82      DONE - new info system
83        DONE - click management
84        DONE - show user info (RO)
85          DONE - require command/info
86          DONE - fix fiverank table
87          DONE - fix bug with bitwise
88          DONE - fix layout of tables
89      DONE - aggiungere books.png
90
91     - MENTORS
92      - listen all
93
94    - BUDDY LIST
95      - white list
96      - black list
97      - delegate
98
99    - DEANONYMIZER
100       . study how to move login delta injection
101
102    - CERTIFICATIONS
103       DONE . Guarantes for certified-only (buttons choice managed)
104       DONE . Tables for certified-only
105       . Term Of Use
106       . Placing for certified-only
107
108    - IP CLASSES BAN
109       DONE . BAN and BLACK lists added
110       DONE . update method to SIGHUP manager
111       DONE . create constructor refactored
112
113    - PLACEMENT-NORMALIZATION
114       DONE . Normalize previous points
115       DONE . Denormalize "Info" view
116       DONE . Denormalize explained matches
117       DONE . Check placement
118       DONE . Distinguish between inherited mult and local mult
119
120    - AUTO-MAINTENANCE
121      DONE . Terms Of Service acceptance
122        DONE . print date of hard switch
123        DONE . TOS version
124        DONE . user TOS acceptance (db field)
125        DONE . show TOS ([show me later, yes, no]/[yes, no])
126        DONE . switch-off date
127        DONE . manage accept
128        DONE . manage refuse
129        DONE . show current TOS
130        DONE . disable user reason integer field and remove SUSPEND state (db, php)
131        DONE . fix tos layout
132        DONE . opt - download TOS
133        . opt - checkbox for anonimous users with message when not checked
134        . opt - button enabled when arrived to the bottom of the TOS only
135        . opt - check TOS version between config file and TOS file
136      DONE . show guarantee (/guar <login> command)
137        DONE . multi-language
138        DONE . command documentation
139        DONE . manage disagreeding users investigation
140        DONE . self guaranteed
141      . DONE New Users Guarantee Procedure
142        . DONE Change guarantee workflow
143        . DONE Db update
144
145          UserA                 UserB                      Admin
146 -------------------------------------------------------------------------
147       guarante UserB
148            |
149            v
150       Save on mail
151          table,
152       email to UserB
153     (Disabled, MAILED)
154 -------------------------------------------------------------------------
155                            Receive email
156                            to check address
157                                  |
158                                  v
159                            Click on link
160                                  |
161                                  v
162                            Check on mail
163                                table,
164                            update user status,
165                            delete mail rec
166                           (Disabled, TOBECHK)
167 -------------------------------------------------------------------------
168                                                        admin panel
169                                                        accept user
170                                                             |
171                                                             v
172                                                      send email with
173                                                      password,
174                                                      update user status
175                                                       (Normal, NONE)
176 -------------------------------------------------------------------------
177                            Receive email
178                            with password
179 -------------------------------------------------------------------------
180
181      DONE . More user info in the list
182      DONE . Manage date to display when a user was required
183      . Email-address expiration check
184      . Account expiration
185
186
187    DONE - CONTINUE FEATURE
188      DONE . replace explicit strings with multilanguage array
189      DONE . add a php downloader with filtering on allowed requests
190      DONE . save points every game
191      DONE . modify points calculation to include order and mazzo
192      DONE . exclude not standard types from statistics
193          DONE . daily reports (1 for each active tournament)
194          DONE . monthly stats (for normal match only)
195      DONE . show current match ID when created
196      DONE . add info about continue to the info page
197      DONE . add command to continue
198          DONE . check consistency of the request
199      DONE . rearrange users and game status to continue the selected match
200      DONE . investigate user reordering ??
201
202    - WEBSOCKET TRANSPORT
203      . refactoring $enc attribute management
204      DONE . reintroduced $enc = 'plain' for websocket
205      DONE . fallback for not correct WS version
206      DONE . fini of ws stream
207      DONE . reactivate compression
208      DONE . fix xynt_test01
209      DONE M2: brisk working
210      DONE . manage multiport apache config
211      DONE . manage headers correctly in sac-a-push
212      DONE . manage transport.close method where required
213      DONE . xynt_stream: manage fallback to multiple ports
214      DONE . manage fini for ws
215      POST . server: manage input data from clients
216      POST . manage ping/pong (seems not required)
217
218      DONE . client (xynt_streaming.js)
219      DONE . server (transport.phh)
220
221      DONE M1: xynt_test01.php working
222
223
224    - improved S
225      . db update (add components, maybe single string)
226      . filter in index.php
227      . filter in index_wr.php
228
229    - prefs API:
230      . prefs_assign(content): assign json content as output var
231      . prefs_apply(prefs_new): apply new content to g_prefs and system
232      . prefs_load(content): load json content and apply to g_prefs and system
233
234      . prefs_update: update preferences temporarly
235      . prefs_save: save to the server the new prefs
236
237    - preferences (listen into preferences)
238         // js var, volatile server, (db server || cookie)
239         temporary: js var, volatile server
240         permanent: js var, volatile server, (db server || cookie)
241
242      . data from db OR, if missing, from cookies
243
244      . update values
245      . database change
246      . MANAGE NOT AUTH USERS
247
248    - preferences (with "modifiable S")
249      . Mod. S: new flag into database
250      . graph infrastructure
251      . new box to edit color
252
253   MAJOR |
254  -------+
255    - BUG: some connection to the named socket fails
256    - Not simultaneous more then one stream
257
258
259   MINOR |
260  -------+
261    WIP - try to be more antivirus-friendly
262    - multiple rows between games
263    - packetize and automatize php-ancillary and apache module
264    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
265
266
267   DONE |
268  ------+
269    DONE - temporarly server hung not reflected on user timeouts
270    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
271    DONE - page still opened after the server restart
272    DONE - log_legal address fix
273    DONE - manage too fast reload in xynt-streaming
274    DONE - add xhr as transport layer and manage different streams better
275    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
276    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
277    DONE - save/restore database
278    DONE - into the room local step remains -1
279    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
280    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
281           in the first tentative, the second works
282    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
283           problem was a call to a static parent method instead of the overrided child method,
284           substitute self:: with the dynamically get class::)
285    DONE - garbage management
286
287    DONE/FROZEN - problem with getpeer (HOSTADDR)
288
289    DONE - slow cards distribution
290    DONE - substr to mb_substr
291    DONE - parametrizations:
292           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
293           . parametrization of SITE_PREFIX(_LEN) define
294           . move the name of the named socket into the configuration file
295    DONE - manage and test cross forwarder between table and room
296    DONE - setcookie (for tables only and persist prefs)
297    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
298    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
299    DONE - unneeded garbage_time.expired access
300    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
301    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
302    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
303    DONE - configuration file management
304    DONE - app level keep-alive
305    DONE - index_wr other issues
306    DONE - from room to table
307    DONE - from table to room
308    DONE - chunked
309    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
310    DONE - partial write for normal page management
311    DONE - index_rd_ifra: last_clean issue
312    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
313    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
314    DONE - index_wr.php::chat
315    DONE - index_wr.php::exit
316    DONE - index_rd.php porting
317    DONE - generic var management from internet
318    DONE - index.php auth part
319    ABRT - index_wr.php::reload - reload is js-only function
320    ABRT - keepalive management - not interesting for our purposes
321
322  BRISK4 (mammuth)
323  ======
324
325  - STEP MANAGEMENT VERIFY
326  Slim Paragraph
327  DONE - move the garbage timeout on file
328  DONE - in index_rd load all data only when required
329  - briskin5 alignment
330    DONE . extern del garb_timeout
331    DONE . user_load parameters verify
332    DONE . Bin5::load_data and Bin5::save_data refactoring with
333           data split
334    . move many function into "Bin5 class"
335  - garbaging of .step files
336
337  DB: - initial usage
338      DONE - configurabilitĂ  file o db
339      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
340      DONE - travasatore file to pg
341        DONE - travaso punteggi
342        DONE - memorizzazione nuovi i punteggi nel db
343        DONE - gestione classifiche in SQL
344          DONE - produrle
345          DONE - mostrarle
346
347      STEP 1.1
348        DONE - points archiver
349
350      STEP 1.2
351        DONE - partial usability if database go down.
352
353      STEP 1.5
354      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
355
356      STEP 2
357      - modifica password   
358      - ripristino password 
359
360      STEP 3
361      - comunicazioni di aggiornamento (stato salvato sul server) 
362
363  DONE - var $G_base aggiunta per gestire include in include da path differenti
364
365  BRISK3 (trusty)
366  ======
367   DONE - donameter
368     DONE - G_donors
369     DONE (WOW!) - js object with infos
370     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
371            to prevent fast reload)
372     DONE - cookie per non assillare e visualizz.
373     DONE - graphical donameter
374     WIP content (in conf.)
375
376   DONE - numero di tavoli auth-only nel .brisk-install
377   - isolation
378     TEST - ricalcolo delle persone in piedi quando si cambia modalitĂ 
379     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
380     DONE - non leggere le chat di quelli non autenticati (in isolation)
381     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
382     DONE - treni non auth da nascondere 
383     DONE - verso gli altri ??: uguale a prima
384
385   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
386   coniglio
387   only auth strictly
388   placing limits to config file
389
390 Dunque, 
391
392 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
393
394 - cosa cambia tra le tre coppie di classifiche: 
395   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
396   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato piĂą di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
397
398 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
399
400 Un esempio per chiarire:
401
402   l'utente 'pippo' che Ă¨ nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
403     -2, 1, 2, 1
404   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
405   
406   a paritĂ  di score tra utenti va piĂą in alto chi ha giocato piĂą partite.
407
408 Se dopo quelle 4 partite 'pippo' non ne giocherĂ  piĂą, passata una settimana dall'ultima giocata 
409 sparirĂ  dalla classifica settimanale e rimarrĂ  in quelle mensili e trimestrali.
410
411
412   
413
414
415
416
417  BUG
418  ---
419  
420   DONE - paste da demauroparavia
421   DONE - recupero partita per re-login con password
422   DONE - problema "|" nei nomi (manca enhance degli script lato server)
423   - problema col treno se mouse sopra mentre stringe (verif)
424   
425  MINOR
426  -----
427
428  NORMAL
429  ------
430
431   - win test
432   WIP - /listen 
433     DONE - skin della textarea
434     DONE - set cookie 
435     DONE - init client (read from cookie) - ALWAYS BY SERVER
436     DONE - init server
437     DONE - after cookie check auth-only when no-auth case
438     DONE - aggiungi info accanto a "Chat"
439   DONE - /mesgtoadm
440   DONE - img dei comandi
441
442   DONE - form per garantire utenti (accoda in un file nel formato corretto)
443   DONE -   process request
444   DONE -   show form
445   DONE -   close butt
446   DONE -   submit form
447   DONE -   process form js side 
448   DONE -   process form
449   DONE -   documentazione in help
450
451   DONE - user status
452
453   DONE - aggiornare help
454   DONE -   overflow management
455   DONE -   for status
456   -   for password
457
458   DONE - reload home
459   - notify for long pages
460
461   - buddy list
462   - silenziastolti vari (fino al buddy import)
463   - restrict challenge per IP
464   - restricted charset for login
465   - watchdog
466
467   - db (minimal)
468     - db admin page
469     - user db admin
470     - use db 
471     - admin db
472
473     - studiare un anti-dos
474   - login modify
475  DONE  - db (fake)
476  DONE  - display auth
477     - manage preferences 
478
479  minor
480  -----
481    - auth after login
482
483 ----- done ------
484
485  BUG
486  ---
487   DONE   righe troncate
488   DONE - questione "a monte" che:
489   DONE   - lascia fuori il bottone
490   DONE   - scrive &agrave e compagnia
491   DONE - refresh act_table when unauthorized
492   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
493
494  MINOR
495  -----
496   DONE - refactoring of the owner name (auth attr for owner name)
497   DONE   - room
498   DONE     - at chat input line 
499   DONE     - in the chat output line
500   DONE     - deauth management
501   DONE - table
502   DONE   - at chat input line
503   DONE   - in the chat output line
504   DONE   - for user area of other users
505   DONE   - deauth management
506   DONE - alart to one user
507
508
509  NORMAL
510  ------
511   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
512   DONE   - login: se auth      -  verifica solo gli expire per quel nick
513   DONE   -        se non auth  -  verifica gli expire per IP e sessione
514   DONE   - riscrivere messaggi
515
516   DONE - login 
517   DONE   - se pass:
518   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
519   DONE     - lo legge, ci hasha la password
520   DONE     - invia la pass al server hashata
521   DONE   - se non pass:
522   DONE     - check del login e return corretto
523   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
524   DONE     - rename ghost if logged
525   DONE     - onunload_cb e onbeforeunload_cb !!! 
526   DONE   - da change attrs a change class (input field)
527   DONE     - colore del bg per arrivare ad essere omogeneo
528   DONE     - cambiare path e file di config
529   DONE   - login with or without pass
530   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
531   DONE     - segnalare tavoli solo per auth
532   DONE     - rename restriction at auth table
533   DONE     - change nick (strcasecmp)
534   DONE   - refact js tables to handle flags
535   DONE - room javascript refactoring
536
537   DONE - work background
538   DONE - reserved tables
539
540
541  BRISK2 (spawn)
542  ======
543
544    
545    URGENT - tables spawn
546             DONE - link with photos
547             DONE - top banner in Etc file
548             DONE - spawn of a table
549             DONE - data to cookies (removed table_idx from xhr calls also)
550             DONE - set subst to shutdowner/shutdowned
551             DONE - return to index.php
552             DONE - game's token
553             DONE - recover of corrupted table data
554             DONE - closure of a table
555             DONE - flush of the table
556             DONE - security checks for right scope access
557             DONE - garbage collector management
558             DONE -    recursive garbage - howto ?
559             DONE - stat & subst in browser
560             DONE - laccwr setting and exit if all players are unactive for some time
561             DONE - the list of test case
562             DONE - shm dimension
563             DONE - remove unused parts
564             DONE - move images
565             DONE - optimizations
566             DONE - cambiare titolo al tavolo
567             DONE - shutdowning lock tables
568             DONE - topbanner
569             DONE - public announcements
570             DONE - 10 sec to exit from table
571
572             FAR - inheritances
573    
574    TRAIN  -  DONE - add again in reload   
575              DONE - wag_set refact
576              DONE - filtra char speciali per title
577              DONE - chatt_send refact 
578              DONE - elenco dei giocatori
579              DONE - documentazione online
580              DONE - timeout management     
581              LATER - border color a muzzo
582        
583    NORM   - testament
584    NORM   - public announcements
585    NORM   - 10 sec to exit from table
586    NORM   - moving label for tables click
587
588 ----------------- join -----------------
589    NORM   - map
590
591    NORM   - restart preload img
592    NORM   - tools dir with a main and some pages where check briscola tools.
593    NORM   - watchdog
594
595    NORM   - chat vecchie in reload (forse)
596
597  MIDDLE TODO
598  ===========
599
600    - user assistant (with button to enable disable)
601    - documentation
602
603
604  FAR TODO
605  ========
606    NORM - internationalization
607    NORM - img -> div + css
608    
609  WEB
610  ===
611
612    - link to stable/unstable
613
614 -------------------------------------------------------------------
615  DONE
616  ====
617
618    ABORTED - asta: highlight buttons (css hover) - change pointer when over
619    DONE - step proxy
620    DONE - special chars in js
621    DONE - ban temporaneo dai tavoli
622    DONE - flash player to play sound
623    DONEBUG - (aum. il timeout) - carte giocate che restano girate
624          Sembra non migliorare di molto la cosa, gestita la cache
625          correttamente, sono apposto.
626
627    DONE - one player reject a game, to less points (<= 2)
628    DONE - help page
629    DONE - test di download per la cache
630    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
631           Corretto il codice, occorre verificare se questo
632           ingenera qualche problema.
633    DONE - raddoppiato il numero di righe nella chat
634    DONE - corretto bug del /nick
635    DONE - carosello pubblicitĂ  altout
636    DONE - smammamorti
637    DONE - unload of the stream
638    DONE - standup centrati
639    DONE - current player - in info
640    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
641    DONE - welcome lines in the chats (room and table)
642    DONE - welcome lines in the chats (room and table)
643    DONE - nomi in primo piano se vai sul quadrato   
644    DONE - to pass explicit config file to INSTALL.sh
645    DONE - flag to create a config file
646    ABRT - bottoni => immagini
647    DONE - aggiungere bottone al login
648    DONE - nomi in primo piano se vai sul quadrato   
649    DONE - installer to set cookie path
650    DONE - change name
651    DONE - automatic and manual logout
652    DONE - cache problems solved via .htaccess
653    DONE - all players out of the auction
654    DONE - time to send cards
655    DONE - hide cards before sends at a new game
656    DONE - well recognization of the browser and O.S.
657    DONE - login consistency !!!!
658    DONE - functionalization of garbage
659    DONE - call garbage function into login
660    DONE - game
661    DONE - manage the reload from scratch of the table page
662    DONE - table reset
663    DONE - sendcard => card_send(idx, ....)
664    DONE - show table for game
665    DONE - points calculation
666    DONE - make-up of the chooser
667    DONE - where place the briscola on the table
668    DONE - users info
669    DONE - show current auction position
670    DONE - table with internal management of the transition between pages.
671    DONE - server side page abort management  
672    DONE - cookie problem with Ajax
673    DONE - spostare il tasto "esco"
674    DONE - to pass explicit config file to INSTALL.sh 
675    DONE - 8 tables
676    DONE - safety out management
677    DONE - info enhancement and related button (how win the last game and
678           with how much points ?)
679
680  WEB
681    DONE - homepage
682    DONE - screenshots
683
684 DOC
685    CHAPTERS
686       HTTP Streaming
687       Local serializer
688       Database on shmem
689       Page abort (reload on http streaming case)
690       Chat
691       Cookies management
692       CSS tricks
693
694 CHECK ON NEW SERVERS
695 .htaccess AllowOverwrite mode for Cache-Control directive
696
697
698
699
700 */
701