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